[[JHIPSTER一覧]] *** 目次 [#of58cd7c] #contents ** はじめに、 [#fb73c2e7] このドキュメントは、JHIPSTERという、Javaコードジェネレータの定義JDLを魔改造するための知識を得るため、英語が苦手な人が、頑張って、グーグル翻訳をペタリと張り付け、体裁おを整えてみたものです。 *** 原文はこちら [#wb2b24b1] https://sap.github.io/chevrotain/documentation/4_8_1/classes/parser.html * メソッド [#dbc12162] ** AT LEAST ONE [#a015cda6] AT LEAST ONE ( actionORMethodDef :GrammarAction < any > | DSLMethodOptsWithErr < any > ):void BaseParserから継承されます。少なくとも一つの api.d.tsで定義:616 便利な方法は、MANYと同じですが、繰り返しは1回以上です。少なくとも1回の繰り返しに一致しないと、構文解析エラーが発生し、構文解析エラーが発生します。 *** 参考 [#of59ed26] MANY *** パラメーター [#pa6659a3] actionORMethodDef:GrammarAction < any > | DSLMethodOptsWithErr < any > オプションで複数回呼び出す文法アクション、または文法アクションとオプションのプロパティを記述する "OPTIONS"オブジェクト。 *** 戻り値 [#zf041f02] void * AT_LEAST_ONE_SEP [#u835e1dc] AT_LEAST_ONE(actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>): void BaseParserから継承されます。AT_LEAST_ONE_SEP api.d.tsで定義されています:705 便利な方法、MANY_SEPと同じですが、繰り返しは1回以上です。少なくとも1回の繰り返しに一致しないと、構文解析エラーが発生し、パーサーはエラー回復を試みます。 追加のオプションプロパティERR_MSGを使用してカスタムエラーメッセージを提供できることに注意してください。 *** 参照 [#mfb0dd95] MANY_SEP *** パラメーター [#sf3e5305] オプション: AtLeastOneSepMethodOpts<any> 各反復の文法と反復間の区切り文字を定義するオブジェクト voidを返します ** BACKTRACK [#qf37fc9d] BACKTRACK<T>(grammarRule: function, args?: any[]): function BaseParserから継承されます。バックトラック api.d.tsで定義されている:63 *** 型パラメータ [#kb590b43] - T *** パラメーター [#iee2b75c] grammarRule:関数 バックトラックモードで試行して解析するための規則。 (... args :any [] ):T パラメーター 休憩 ... args:any [] Tを返します オプションの引数:any [] 文法規則の実行に渡される引数 関数を返します 与えられたgrammarRuleを解析しようとし、成功すればtrueを返す先読み関数 ():ブール値 ブール値を返します ** CONSUME [#f93f9ecc] CONSUME(tokType: TokenType, options?: ConsumeMethodOpts): IToken BaseParserから継承されます。消耗品 api.d.tsで定義されています:99 単一のトークンを消費するために使用する構文解析DSLメソッド。EBNFの用語では、これは端末と同等です。 トークンが消費され、トークンベクトル内の次のトークンが一致するとIFF 。そうでなければ、パーサーはエラー回復を実行しようと試みるかもしれません(可能にされているなら)。 メソッド名のインデックスは、最上位ルール内での端末消費の一意の発生を示します。これが意味するのは、端末が単一のルール内に複数回現れる場合、各外観は異なるインデックスを持たなければならないということです。 *** 例: [#s3541b26] this.RULE("qualifiedName", () => { this.CONSUME1(Identifier); this.MANY(() => { this.CONSUME1(Dot); // here we use CONSUME2 because the terminal // 'Identifier' has already appeared previously in the // the rule 'parseQualifiedName' this.CONSUME2(Identifier); }); }) 固有の接尾部の要件に関する詳細を参照してください。 パラメーター tokType:TokenType 消費されるトークンの種類。 オプションのオプション:ConsumeMethodOpts CONSUMEの動作を変更するためのオプションのプロパティ。 ITokenを返します。 ** LA [#t877cc75] LA ( howMuch :number ):IToken BaseParserから継承されます。LA api.d.tsで定義:810 *** パラメーター [#x1ccc807] howMuch:数 ITokenを返します。 ** MANY [#g47aa4e6] MANY ( actionORMethodDef :GrammarAction < any > | DSLMethodOpts < any > ):void BaseParserから継承されます。たくさんの api.d.tsで定義:442 DSLメソッドの解析。ゼロ以上の繰り返しを示します。これはEBNFの繰り返し{...}と同じです。 2つの構文形式があることに注意してください。 文法アクションを直接渡す this.MANY(() => { this.CONSUME(Comma) this.CONSUME(Digit) }) "options"オブジェクトを使う: this.MANY({ GATE: predicateFunc, DEF: () => { this.CONSUME(Comma) this.CONSUME(Digit) } }); "options"オブジェクト形式のオプションの 'GATE'プロパティを使用して、文法アクションを呼び出すための制約を追加することができます。 CONSUMEと同様に、メソッド名のインデックスは、その最上位ルールでの繰り返し生成の発生を示します。 *** パラメーター [#gdbdd92a] actionORMethodDef:GrammarAction < any > | DSLMethodOpts < any > オプションで複数回呼び出す文法アクション、または文法アクションとオプションのプロパティを記述する "OPTIONS"オブジェクト。 voidを返します ** MANY_SEP [#rce9cab7] MANY_SEP(options: ManySepMethodOpts<any>): void BaseParserから継承されます。MANY_SEP api.d.tsで定義:549 DSL方式の構文解析。繰り返しの間に区切り文字トークンを付けて、ゼロ以上の繰り返しを示します。 例: this.MANY_SEP({ SEP:Comma, DEF: () => { this.CONSUME(Number}; // ... }) このDSLメソッドは常に複数の引数を必要とするため、optionsオブジェクトは常に必須であり、MANY DSLメソッドのように短い形式を使用することはできません。 別の反復が存在するかどうかを判断する目的で、単一のトークンのみが調べられます(区切り文字)。したがって、実装されている文法が項目区切り文字を識別するために複数のトークンを必要とするほど「クレイジー」である場合は、より基本的なDSLメソッドを使用してそれを実装してください。 CONSUMEと同様に、メソッド名のインデックスは、その最上位ルールでの繰り返し生成の発生を示します。 現在の実装の制限により、 "SEP"プロパティは "DEF"プロパティの前に配置する必要があります。 パラメーター オプション:ManySepMethodOpts < any > 各反復の文法と反復間の区切り文字を定義するオブジェクト voidを返します ** OPTION [#kb13ec3d] OPTION <OUT> ( actionORMethodDef :GrammarAction < OUT > | DSLMethodOpts < OUT > ):OUT BaseParserから継承されます。オプション api.d.tsで定義されている:216 オプションのプロダクションを示すDSL解析メソッド。EBNF表記では、これは "[...]"と同等です。 2つの構文形式があることに注意してください。 文法アクションを直接渡す this.OPTION(() => { this.CONSUME(Digit)} ); "options"オブジェクトを使う: this.OPTION({ GATE:predicateFunc, DEF: () => { this.CONSUME(Digit) }}); "options"オブジェクト形式のオプションの 'GATE'プロパティを使用して、文法アクションを呼び出すための制約を追加することができます。 CONSUMEと同様に、メソッド名のインデックスは、最上位規則の中でオプションのプロダクションの出現を示します。 型パラメータ でる パラメーター actionORMethodDef:GrammarAction < OUT > | DSLMethodOpts < OUT > オプションで1回呼び出す文法アクション、または文法アクションとオプションのプロパティを記述する "OPTIONS"オブジェクト。 OUTを返します ** OR [#ae663ea2] OR ( altsOrOpts :IAnyOrAlt [] | OrMethodOpts ):any BaseParserから継承されます。または api.d.tsで定義:352 一連の選択肢の中から選択を示す構文解析DSLメソッドを作成する必要があります。これは、選択肢がPEG文法のように順序付けられていることを除いて、EBNF交替(A | B | C | D ...)と同等です。これは、最初に一致した選択肢が常に選択されることを意味します。 内部の代替配列にはいくつかの形式があります。 代替配列を直接渡す: this.OR([ { ALT:() => { this.CONSUME(One) }}, { ALT:() => { this.CONSUME(Two) }}, { ALT:() => { this.CONSUME(Three) }} ]) 述語(GATE)を使って代替配列を直接渡す: this.OR([ { GATE: predicateFunc1, ALT:() => { this.CONSUME(One) }}, { GATE: predicateFuncX, ALT:() => { this.CONSUME(Two) }}, { GATE: predicateFuncX, ALT:() => { this.CONSUME(Three) }} ]) これらの構文形式は混在させることもできます。 this.OR([ { GATE: predicateFunc1, ALT:() => { this.CONSUME(One) } }, { ALT:() => { this.CONSUME(Two) }}, { ALT:() => { this.CONSUME(Three) }} ]) さらに「オプション」オブジェクトを使用することができます。 this.OR({ DEF:[ { ALT:() => { this.CONSUME(One) }}, { ALT:() => { this.CONSUME(Two) }}, { ALT:() => { this.CONSUME(Three) }} ], // OPTIONAL property ERR_MSG: "A Number" }) 長い形式の「predicateFuncX」は、選択肢の選択に制約を追加するために使用できます。 CONSUMEと同様に、メソッド名のインデックスは、その最上位ルールでの代替生産のオカレンスを示します。 パラメーター altsOrOpts:IAnyOrAlt [] | OrMethodOpts 選択肢のセット、または選択肢とオプションのプロパティを記述する "OPTIONS"オブジェクト。 anyを返します 選択された選択肢を呼び出した結果。 ** OVERRIDE_RULE [#q2abbd1e] OVERRIDE_RULE<T>(name: string, impl: function, config?: IRuleConfig<T>): function api.d.tsで定義:844 Parser.RULEと同じですが、スーパー文法からの規則/生成を無効にするために文法を「拡張する」際にのみ使用されるべきです。パーサー継承の例を参照してください。 *** 型パラメータ [#r8d80577] - T *** パラメーター [#a8021880] - 名前:文字列 - 暗黙:関数 (... implArgs :any [] ):T *** パラメーター [#sc288c04] Rest ... implArgs:any [] Tを返します オプションの設定:IRuleConfig < T > 関数を返します ( idxInCallingRule ?:number、... args :any [] ):T | どれか パラメーター オプションの idxInCallingRule:number 休憩 ... args:any [] Tを 返します。 どれか ** RULE [#f0003e18] RULE<T>(name: string, implementation: function, config?: IRuleConfig<T>): function api.d.tsで定義:833 *** 型パラメータ [#nea570c0] T *** パラメーター [#q47a59eb] - 名前:文字列 - ルールの名前 実装:機能 ルールの実装 (... implArgs :any [] ):T *** パラメーター [#m9dd5240] Rest ... implArgs:any [] Tを返します オプションの設定:IRuleConfig < T > 関数を返します を処理する解析ロジックでラップされた本番用実装である解析ルール Parser state / error recovery&reporting/ ... ( idxInCallingRule ?:number、... args :any [] ):T | どれか *** パラメーター [#q6479335] オプションの idxInCallingRule:number 休憩 ... args:any [] Tを 返します。 どれか ** SKIP_TOKEN [#g5fb4759] SKIP_ TOKEN ():IToken BaseParserから継承されます。SKIP_TOKEN api.d.tsで定義されています:808 ITokenを返します。 ** SUBRULE [#o3c7ad2f] SUBRULE <T> ( ruleToCall :機能、オプション?:SubruleMethodOpts ):T api.d.tsで定義:870 構文解析DSLメソッドは、あるルールで別のルールを呼び出すために使用されます。これはEBNF表記法では非終端記号と同等です。 実際にはあまり効果がないので、これは冗長に見えるかもしれません。ただし、それを使用することは、すべてのサブ規則呼び出しに必須です。 SUBRULE(...)で折り返さずに別のルールを呼び出すと、Parserの自己分析フェーズでエラー/ミスが発生し、エラー回復/自動先読み計算およびParserの自己分析出力に依存するその他の機能にエラーが発生します。 CONSUMEと同様に、メソッド名のインデックスは、そのルール内のサブルール呼び出しの発生を示します。 *** 型パラメータ [#v2096200] - T *** パラメーター [#aa1f9e22] ruleToCall:関数 呼び出す規則。 ( idx :number ):T パラメーター idx:番号 Tを返します オプションのオプション:SubruleMethodOpts SUBRULEの動作を変更するためのオプションのプロパティ。 Tを返します ruleToCallを呼び出した結果。 ** canTokenTypeBeInsertedInRecovery [#m82093d7] canTokenTypeBeInsertedInRecovery(tokType: TokenType): boolean BaseParserから継承されます。canTokenTypeBeInsertedInRecovery api.d.tsで定義:795 デフォルトではすべてのトークンタイプが挿入されます。この振る舞いは、例えば、認識機能を継承することでオーバーライドされるかもしれません:それらは追加の意味的価値を持たないので句読点トークンだけが自動的に挿入されるかもしれないと決めるかもしれません。(必須のセミコロンには追加の意味はありませんが、整数はそのint値とコンテキストによっては追加の意味がある場合があります(カーディナリティーに整数0を挿入すると、カーディナリティーの最大値は最小値よりも大きい値にします(これは誤ったエラーです!)。 パラメーター tokType:TokenType ブール値を返します ** computeContentAssist [#oee71375] computeContentAssist(startRuleName: string, precedingInput: IToken[]): ISyntacticContentAssistPath[] api.d.tsで定義されている:52 *** パラメーター [#b75628ef] startRuleName:文字列 previousInput:IToken [] コンテンツアシストポイントまでの(含まれない)トークンベクトル ISyntacticContentAssistPath []を返します。 ** getBaseCstVisitorConstructor [#y7eec4fb] getBaseCstVisitorConstructor(): object BaseParserから継承されます。getBaseCstVisitorConstructor api.d.tsで定義されている:36 オブジェクトを返します コンストラクタ:関数 new __type (... args :any [] ):ICstVisitor < any 、any > api.d.tsで定義されている:36 パラメーター 休憩 ... args:any [] ICstVisitor < any 、any >を返します。 ** getBaseCstVisitorConstructor [#db4047de] getBaseCstVisitorConstructor(): object BaseParserから継承されます。getBaseCstVisitorConstructorWithDefaults api.d.tsで定義されています:40 オブジェクトを返します コンストラクタ:関数 new __type (... args :any [] ):ICstVisitor < any 、any > api.d.tsで定義されています:40 パラメーター 休憩 ... args:any [] ICstVisitor < any 、any >を返します。 ** getGAstProductions [#nefbca07] getGAstProductions(): HashTable<Rule> BaseParserから継承されます。getGAstProductions api.d.tsで定義されている:44 HashTable < Rule >を返します。 ** getNextPossibleTokenTypes [#de54631a] getNextPossibleTokenTypes(grammarPath: ITokenGrammarPath): TokenType[] BaseParserから継承されます。getNextPossibleTokenTypes api.d.tsで定義されている:802 廃止予定 将来削除されます *** パラメーター [#o23ec6d9] grammarPath:ITokenGrammarPath TokenType []を返します。 *** getSerializedGastProductions [#pf98a076] getSerializedGastProductions(): ISerializedGast[] BaseParserから継承されます。getSerializedGastProductions api.d.tsで定義されている:46 ISerializedGast []を返します。 ** getTokenToInsert [#x5bd8e94] getTokenToInsert(tokType: TokenType): IToken BaseParserから継承されます。getTokenToInsert api.d.tsで定義:786 単一トークンの挿入が完了したときに挿入する「架空の」トークンを返します。文法で特別な動作が必要な場合はこれをオーバーライドします。例えば、IntegerTokenが必要な場合は、それが構文的に有効になるように、画像 '0'を持つものを提供してください。 *** パラメーター [#c25ffb56] tokType:TokenType ITokenを返します。 ** performSelfAnalysis [#j4b7bae1] performSelfAnalysis(): void Inherited from BaseParser.performSelfAnalysis Defined in api.d.ts:15 This must be called at the end of a Parser constructor. See: http://sap.github.io/chevrotain/docs/tutorial/step2_parsing.html#under-the-hood Returns void ** reset [#aeac9b0c] reset(): void Inherited from BaseParser.reset Defined in api.d.ts:34 Resets the parser state, should be overridden for custom parsers which "carry" additional state. When overriding, remember to also invoke the super implementation! Returns void ** Static performSelfAnalysis [#r597eec5] performSelfAnalysis(parserInstance: Parser): void Defined in api.d.ts:822 deprecated use Parser.performSelfAnalysis instance method instead. *** Parameters [#n12943d9] parserInstance: Parser Returns void