過去の記事をまとめてメモとする。ザッと読んで思い出すには便利だと思う。
シェブロテインのレコーディングフェーズとGAST - (新) 檜山正幸のキマイラ飼育記 メモ編
- GAST〈ガスト〉はグラマーASTのこと
- パーザークラスのコンストラクタが呼ばれると自己分析実行関数が実行され、ユーザー定義パーザー関数を呼ぶ。この呼び出しタイミングをレコーディングフェーズという。
- this.RECORDING_PHASE フラグ変数でレコーディングフェーズかどうか判定できる。
- が、そもそもパーザー関数とアクションを分離しておけば this.RECORDING_PHASE 参照は不要。
シェブロテインの自己分析実行関数 - (新) 檜山正幸のキマイラ飼育記 メモ編
- 自己分析関数: peformSeflAnalysys()
- パーザークラス内から、this.peformSeflAnalysys() を呼び出す。
- スタティックメソッド shev.Parser.peformSeflAnalysys(obj)
- スタティックメソッドの使用法と使用場面を知りたい。
シェブロテインのパーザー関数 - (新) 檜山正幸のキマイラ飼育記 メモ編
- パーザー関数とパーザーメソッドは同義
- RULEなどのシェブロテイン組み込みメソッドはDSLメソッドという。
- RULEに第2引数に渡す関数はルール実装関数という。
- DSLメソッドRULEは、ルール実装関数を引数にもらってパーザーメソッドを返す。
- パーザークラス定義内で myParserMethod = this.RULE("myRuleName", myRuleImplFunc);
- 定義されたパーザーメソッド〈パーザー関数〉は、定義時の引数を取り、CstNode を返す関数となる。
- パーザー作成は、DLSメソッドを使ってパーザーメソッドを作る作業になる。
シェブロテインで使っている型 - (新) 檜山正幸のキマイラ飼育記 メモ編
- createToken は TokenType を返す。
- TokenType はインターフェイスでかなり複雑。
- TokenTypeデータは、トークンの構文範疇と振る舞いを定義するデータ
シェブロテインを使ったパーザー - (新) 檜山正幸のキマイラ飼育記 メモ編
- https://github.com/stardog-union/millan/ は参考になる。
- Millan は: a set of parsers for languages used with Stardog
- 失敗の返し方は:1. 例外, 2. ユニオン型とエラー値, 3. ユニオン・レコード型とエラーフィールド 4. コールバック(エラーファースト・コンベンション), 5. プロミス
シェブロテインのCST構造 - (新) 檜山正幸のキマイラ飼育記 メモ編
- CstElement 型は IToken | CstNode
- IToken は TokenType とは違う!
- トークンの構文範疇を表すのではなくて、トークンの文書内での実際の出現を表す。
- CstNode は、トークンの出現以外のCST中間ノードやルートノードを表す。
シェブロテインの学習 - (新) 檜山正幸のキマイラ飼育記 メモ編
- https://github.com/witheve/Eve/blob/master/src/parser/parser.ts
- chevrotain.d.ts が情報の原典
シェブロテインの内部規則のダンプ - (新) 檜山正幸のキマイラ飼育記 メモ編
- const productions: Record
= parser.getGAstProductions(); でproductions にダンプできる。
いまだよく分からないところ
- DSLメソッドに番号が付いているが、あの番号の使い方が分からない。
- デリミタと、デリミタで区切られる記号の区別をどうするか分からない。