- 追加された行はこの色です。
- 削除された行はこの色です。
[[JHIPSTER一覧]]
[[Chevrotain一覧]]
*** 目次 [#of58cd7c]
#contents
** はじめに、 [#fb73c2e7]
このドキュメントは、JHIPSTERという、Javaコードジェネレータの定義JDLを魔改造するための知識を得るため、英語が苦手な人が、頑張って、グーグル翻訳をペタリと張り付け、体裁おを整えてみたものです。
*** 原文はこちら [#wb2b24b1]
https://sap.github.io/chevrotain/documentation/4_8_1/classes/parser.html
https://chevrotain.io/docs/
* メソッド [#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