* 動機 [#lf3edce8] どういうわけだか寝る前に、jhipster-coreに自前のアノテーションを追加してパースさせてみようとおもった。 * ゴール [#o8760ab5] 以下のアノテーションを追加 @Post * 結果 [#b929168f] とりあえず、字句解析と構文解析が設定されているファイルまでたどりついたら、眠くなったので寝ることにした。 * 既存のアノテーションの実装を分析 [#f09fc6f6] ** 解析のエントリーポイント [#uc1b823d] 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'); *** 字句解析 [#nab7a702] ./lexer/lexer が字句解析として設定されているようである。 *** 構文解析 [#z92d61a6] ./jdl_parser が構文解析として設定されているようである。 ** 既存のアノテーションでソースコードを検索 [#c28ff3d1] 既存のアノテーションでソースコードを検索すれば、あたりがつくのではないだろうか?ということで、やってみる アノテーションには、 @dto @skipClient などがある。実装を探るには、アットマークなしの文言で検索すると、該当箇所がでてきた。 application_options.js に、以下の定数に格納されているので、そこからも調査してみる。 SKIP_CLIENT パースされた結果、UNARYという種類であると、認識されるらしい。jdl_unary_option.js