JHIPSTER一覧

Chevrotain一覧

目次

はじめに、

このドキュメントは、JHIPSTERという、Javaコードジェネレータの定義JDLを魔改造するための知識を得るため、英語が苦手な人が、頑張って、グーグル翻訳をペタリと張り付け、体裁おを整えてみたものです。

原文はこちら

https://sap.github.io/chevrotain/documentation/4_8_1/classes/parser.html

メソッド

AT LEAST ONE

AT LEAST ONE ( actionORMethodDef :GrammarAction < any > | DSLMethodOptsWithErr < any > ):void

BaseParser?から継承されます。少なくとも一つの

api.d.tsで定義:616

便利な方法は、MANYと同じですが、繰り返しは1回以上です。少なくとも1回の繰り返しに一致しないと、構文解析エラーが発生し、構文解析エラーが発生します。

参考

MANY

パラメーター

actionORMethodDef:GrammarAction < any > | DSLMethodOptsWithErr < any >

オプションで複数回呼び出す文法アクション、または文法アクションとオプションのプロパティを記述する "OPTIONS"オブジェクト。

戻り値

void

AT_LEAST_ONE_SEP

AT_LEAST_ONE(actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>): void

BaseParser?から継承されます。AT_LEAST_ONE_SEP

api.d.tsで定義されています:705

便利な方法、MANY_SEPと同じですが、繰り返しは1回以上です。少なくとも1回の繰り返しに一致しないと、構文解析エラーが発生し、パーサーはエラー回復を試みます。

追加のオプションプロパティERR_MSGを使用してカスタムエラーメッセージを提供できることに注意してください。

参照

MANY_SEP

パラメーター

オプション:

AtLeastOneSepMethodOpts<any>

各反復の文法と反復間の区切り文字を定義するオブジェクト

voidを返します

BACKTRACK

BACKTRACK<T>(grammarRule: function, args?: any[]): function

BaseParser?から継承されます。バックトラック

api.d.tsで定義されている:63

型パラメータ

パラメーター

grammarRule:関数 バックトラックモードで試行して解析するための規則。

(... args :any [] ):T パラメーター 休憩 ... args:any [] Tを返します オプションの引数:any [] 文法規則の実行に渡される引数

関数を返します 与えられたgrammarRuleを解析しようとし、成功すればtrueを返す先読み関数

():ブール値 ブール値を返します

CONSUME

CONSUME(tokType: TokenType, options?: ConsumeMethodOpts): IToken

BaseParser?から継承されます。消耗品

api.d.tsで定義されています:99

単一のトークンを消費するために使用する構文解析DSLメソッド。EBNFの用語では、これは端末と同等です。

トークンが消費され、トークンベクトル内の次のトークンが一致するとIFF 。そうでなければ、パーサーはエラー回復を実行しようと試みるかもしれません(可能にされているなら)。

メソッド名のインデックスは、最上位ルール内での端末消費の一意の発生を示します。これが意味するのは、端末が単一のルール内に複数回現れる場合、各外観は異なるインデックスを持たなければならないということです。

例:

 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

LA ( howMuch :number ):IToken

BaseParser?から継承されます。LA

api.d.tsで定義:810

パラメーター

howMuch:数 ITokenを返します。

MANY

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と同様に、メソッド名のインデックスは、その最上位ルールでの繰り返し生成の発生を示します。

パラメーター

actionORMethodDef?GrammarAction? < any > | DSLMethodOpts? < any > オプションで複数回呼び出す文法アクション、または文法アクションとオプションのプロパティを記述する "OPTIONS"オブジェクト。

voidを返します

MANY_SEP

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

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

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

OVERRIDE_RULE<T>(name: string, impl: function, config?: IRuleConfig<T>): function

api.d.tsで定義:844

Parser.RULEと同じですが、スーパー文法からの規則/生成を無効にするために文法を「拡張する」際にのみ使用されるべきです。パーサー継承の例を参照してください。

型パラメータ

パラメーター

(... implArgs :any [] ):T

パラメーター

Rest ... implArgs:any [] Tを返します オプションの設定:IRuleConfig? < T > 関数を返します ( idxInCallingRule? ?:number、... args :any [] ):T | どれか パラメーター オプションの idxInCallingRule?:number 休憩 ... args:any [] Tを 返します。 どれか

RULE

RULE<T>(name: string, implementation: function, config?: IRuleConfig<T>): function

api.d.tsで定義:833

型パラメータ

T

パラメーター

実装:機能 ルールの実装

(... implArgs :any [] ):T

パラメーター

Rest ... implArgs:any []

Tを返します

オプションの設定:IRuleConfig? < T > 関数を返します を処理する解析ロジックでラップされた本番用実装である解析ルール

             Parser state / error recovery&reporting/ ...

( idxInCallingRule? ?:number、... args :any [] ):T | どれか

パラメーター

オプションの idxInCallingRule?:number 休憩 ... args:any [] Tを 返します。 どれか

SKIP_TOKEN

SKIP_ TOKEN ():IToken

BaseParser?から継承されます。SKIP_TOKEN

api.d.tsで定義されています:808

ITokenを返します。

SUBRULE

SUBRULE <T> ( ruleToCall :機能、オプション?:SubruleMethodOpts ):T

api.d.tsで定義:870

構文解析DSLメソッドは、あるルールで別のルールを呼び出すために使用されます。これはEBNF表記法では非終端記号と同等です。

実際にはあまり効果がないので、これは冗長に見えるかもしれません。ただし、それを使用することは、すべてのサブ規則呼び出しに必須です。

SUBRULE(...)で折り返さずに別のルールを呼び出すと、Parserの自己分析フェーズでエラー/ミスが発生し、エラー回復/自動先読み計算およびParserの自己分析出力に依存するその他の機能にエラーが発生します。

CONSUMEと同様に、メソッド名のインデックスは、そのルール内のサブルール呼び出しの発生を示します。

型パラメータ

パラメーター

ruleToCall?:関数 呼び出す規則。

( idx :number ):T パラメーター idx:番号 Tを返します オプションのオプション:SubruleMethodOpts? SUBRULEの動作を変更するためのオプションのプロパティ。

Tを返します ruleToCall?を呼び出した結果。

canTokenTypeBeInsertedInRecovery?

canTokenTypeBeInsertedInRecovery(tokType: TokenType): boolean

BaseParser?から継承されます。canTokenTypeBeInsertedInRecovery?

api.d.tsで定義:795

デフォルトではすべてのトークンタイプが挿入されます。この振る舞いは、例えば、認識機能を継承することでオーバーライドされるかもしれません:それらは追加の意味的価値を持たないので句読点トークンだけが自動的に挿入されるかもしれないと決めるかもしれません。(必須のセミコロンには追加の意味はありませんが、整数はそのint値とコンテキストによっては追加の意味がある場合があります(カーディナリティーに整数0を挿入すると、カーディナリティーの最大値は最小値よりも大きい値にします(これは誤ったエラーです!)。

パラメーター tokType:TokenType? ブール値を返します

computeContentAssist?

computeContentAssist(startRuleName: string, precedingInput: IToken[]): ISyntacticContentAssistPath[]

api.d.tsで定義されている:52

パラメーター

startRuleName?:文字列 previousInput:IToken [] コンテンツアシストポイントまでの(含まれない)トークンベクトル

ISyntacticContentAssistPath? []を返します。

getBaseCstVisitorConstructor?

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?

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?

getGAstProductions(): HashTable<Rule>

BaseParser?から継承されます。getGAstProductions?

api.d.tsで定義されている:44

HashTable? < Rule >を返します。

getNextPossibleTokenTypes?

getNextPossibleTokenTypes(grammarPath: ITokenGrammarPath): TokenType[]

BaseParser?から継承されます。getNextPossibleTokenTypes?

api.d.tsで定義されている:802

廃止予定

将来削除されます

パラメーター

grammarPath:ITokenGrammarPath?

TokenType? []を返します。

getSerializedGastProductions?

getSerializedGastProductions(): ISerializedGast[]

BaseParser?から継承されます。getSerializedGastProductions?

api.d.tsで定義されている:46

ISerializedGast? []を返します。

getTokenToInsert?

getTokenToInsert(tokType: TokenType): IToken

BaseParser?から継承されます。getTokenToInsert?

api.d.tsで定義:786

単一トークンの挿入が完了したときに挿入する「架空の」トークンを返します。文法で特別な動作が必要な場合はこれをオーバーライドします。例えば、IntegerToken?が必要な場合は、それが構文的に有効になるように、画像 '0'を持つものを提供してください。

パラメーター

tokType:TokenType?

ITokenを返します。

performSelfAnalysis?

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

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?

performSelfAnalysis(parserInstance: Parser): void

Defined in api.d.ts:822

deprecated

use Parser.performSelfAnalysis? instance method instead.

Parameters

parserInstance: Parser

Returns void

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-20 (火) 09:15:58 (93d)