<!-- markdown -->
# 動機
どういうわけだか寝る前に、jhipster-coreに自前のアノテーションを追加してパースさせてみようとおもった。
# ゴール
以下のアノテーションを追加
@Post
# 結果
とりあえず、字句解析と構文解析が設定されているファイルまでたどりついたら、眠くなったので寝ることにした。
# 既存のアノテーションの実装を分析
## 解析のエントリーポイント
api.js
の定義には、パーサのライブラリが定義されているので、ここから解析をしたらいいのだとおもう。
const _ = require('lodash');
const { EOF } = require('chevrotain');
const { JDLLexer, tokens } = require('./lexer/lexer');
const JDLParser = require('./jdl_parser');
const { performAdditionalSyntaxChecks } = require('./validator');
const { buildAst } = require('./ast_builder');
const { checkTokens } = require('./self_checks/parsing_system_checker');
### 字句解析
./lexer/lexer
が字句解析として設定されているようである。
### 構文解析
./jdl_parser
が構文解析として設定されているようである。
## 既存のアノテーションでソースコードを検索
既存のアノテーションでソースコードを検索すれば、あたりがつくのではないだろうか?ということで、やってみる
アノテーションには、
@dto
@skipClient
などがある。実装を探るには、アットマークなしの文言で検索すると、該当箇所がでてきた。
application_options.js
に、以下の定数に格納されているので、そこからも調査してみる。
SKIP_CLIENT
パースされた結果、UNARYという種類であると、認識されるらしい。jdl_unary_option.js
### 修正箇所はPR形式でまとめてみた
https://github.com/khayashi4337/jhipster-core/pull/2