ExpressionAntlrParser class

Extends

Parser

繼承的屬性

atn

取得辨識器用於預測的 serializedATN

buildParseTree

在剖析期間追蹤 <xref:ParserRuleContext> 物件,並使用 <xref:ParserRuleContext%23children> 清單加以連結,使其形成剖析樹狀結構。 從開始規則傳回的 <xref:ParserRuleContext> 代表剖析樹狀結構的根目錄。 請注意,如果我們不是建置剖析樹狀結構,規則內容只會指向向上。 當規則結束時,它會傳回內容,但如果沒有人持有參考,就會被垃圾收集。 它指向上,但沒有人指向它。

當我們建置剖析樹狀結構時,我們會將這些內容新增至 <xref:ParserRuleContext%23children> 清單。 內容接著不是垃圾收集的候選專案。

context
currentToken

比對需要傳回目前的輸入符號,這會放入相關聯令牌 ref 的標籤中;例如 x=ID。

EOF
errorHandler
inputStream

設定令牌數據流並重設剖析器。

interpreter

設定辨識器用於預測的 ATN 解釋器。

isMatchedEOF
isTrace

在剖析期間,有時有助於接聽規則進入和結束事件,以及令牌相符專案。 這是為了快速且骯髒的偵錯。

numberOfSyntaxErrors

取得剖析期間報告的語法錯誤數目。 每次呼叫 <xref:%23notifyErrorListeners> 時,都會遞增此值。

請參閱 #notifyErrorListeners

parseInfo
precedence

取得最高優先順序規則的優先順序層級。

ruleContext
sourceName
state

指出辨識器已變更與傳入 ATN 狀態一致的內部狀態。 如此一來,我們一律知道我們在 ATN 中的位置,因為剖析器會繼續。 規則內容物件會形成堆疊,讓我們查看叫用規則的堆疊。 結合這一點,而且我們有完整的 ATN 組態資訊。

tokenFactory

繼承的方法

action(RuleContext | undefined, number, number)
addErrorListener(ANTLRErrorListener<Token>)
addParseListener(ParseTreeListener)

註冊 listener,以在剖析過程中接收事件。 為了支持輸出保留文法轉換(包括但不限於左遞歸移除、自動化左因素處理和優化程式代碼產生),剖析期間對接聽程式方法的呼叫可能與剖析完成之後所使用的 <xref:ParseTreeWalker%23DEFAULT> 呼叫有很大的不同。 特別是,在剖析期間,規則進入和結束事件的順序可能會與剖析器之後不同。 此外,可能會省略特定規則專案方法的呼叫。

在下列特定例外狀況下,接聽程式事件的呼叫 具決定性,也就是對於相同的輸入,接聽程式方法的呼叫會相同。

  • 變更用來產生程式代碼的文法可能會變更接聽程式呼叫的行為。
  • 產生剖析器時傳遞至 ANTLR 4 的命令行選項變更可能會變更接聽程式呼叫的行為。
  • 變更用來產生剖析器之 ANTLR 工具的版本可能會變更接聽程式呼叫的行為。
compileParseTreePattern(string, number)

取得樹狀模式的慣用方法。 例如,以下是範例用法:

let t: ParseTree = parser.expr();
let p: ParseTreePattern = await parser.compileParseTreePattern("<ID>+0", MyParser.RULE_expr);
let m: ParseTreeMatch = p.match(t);
let id: string = m.get("ID");
compileParseTreePattern(string, number, Lexer)

與 [int](xref:%23compileParseTreePattern(String%2C) 相同,但請指定 CommonRegexLexer,而不是嘗試從這個剖析器推斷它。

consume()

取用並傳回目前符號 。 例如,假設下列輸入 A 為目前的外觀符號,此函式會將游標移至 B,並傳回 A

A B
^

如果剖析器不是處於錯誤恢復模式,則會使用 <xref:ParserRuleContext%23addChild(TerminalNode)>將取用的符號新增至剖析樹狀結構,並在任何剖析接聽程式上呼叫 <xref:ParseTreeListener%23visitTerminal>。 如果剖析器 處於錯誤恢復模式,則會使用 [Token](xref:%23createErrorNode(ParserRuleContext%2C)將已取用的符號新增至剖析樹狀結構,然後在任何剖析接聽程式上呼叫 <xref:ParserRuleContext%23addErrorNode(ErrorNode)> 和 <xref:ParseTreeListener%23visitErrorNode>。

createErrorNode(ParserRuleContext, Token)

如何建立與父系相關聯的令牌的錯誤節點。 一般而言,要建立的錯誤節點不是父系的函式。

createTerminalNode(ParserRuleContext, Token)

如何建立與父系相關聯的令牌分葉節點。 一般而言,要建立的終端節點不是父系的函式。

dumpDFA()

用於偵錯和其他用途。

enterLeftFactoredRule(ParserRuleContext, number, number)
enterOuterAlt(ParserRuleContext, number)
enterRecursionRule(ParserRuleContext, number, number, number)
enterRule(ParserRuleContext, number, number)

一律由產生的剖析器在規則進入時呼叫。 Access 欄位 <xref:%23_ctx> 取得目前的內容。

exitRule()
getATNWithBypassAlts()

具有略過替代方案的 ATN 成本很高,因此我們很懶散地建立它。 @ 如果目前的剖析器未實作 serializedATN 屬性。

getDFAStrings()

用於偵錯和其他用途。

getErrorHeader(RecognitionException)

錯誤標頭是什麼,通常是行/字元位置資訊?

getErrorListenerDispatch()
getErrorListeners()
getExpectedTokens()

計算一組輸入符號,這些符號可以分別遵循目前剖析器狀態和內容,如 <xref:%23getState> 和 <xref:%23getContext>所指定。

請參閱 ATN#getExpectedTokens(int, RuleContext)

getExpectedTokensWithinCurrentRule()
getInvokingContext(number)
getParseListeners()
getRuleIndex(string)

取得規則的索引(例如,RULE_ruleName 欄位)或找不到時 -1。

getRuleIndexMap()

從規則名稱到規則索引取得對應。 用於 XPath 和樹狀結構模式編譯。

getRuleInvocationStack(RuleContext)

傳回 List<String> 剖析器實例中規則名稱,導致呼叫目前規則。 如果您想要更多詳細資料,例如叫用規則之 ATN 中位置的檔案/行資訊,您可以覆寫 。 這對於錯誤訊息非常有用。

getTokenType(string)
getTokenTypeMap()

從令牌名稱取得對應至令牌類型。 用於 XPath 和樹狀結構模式編譯。

inContext(string)
isExpectedToken(number)

檢查 symbol 是否可遵循ATN中的目前狀態。 這個方法的行為相當於下列專案,但實作如此一來,就不需要明確建構完整的內容相關追蹤集。

return getExpectedTokens().contains(symbol);
match(number)

比對目前的輸入符號與 ttype。 如果符號類型相符,則會呼叫 <xref:ANTLRErrorStrategy%23reportMatch> 和 <xref:%23consume> 來完成比對程式。 如果符號類型不相符,則會在目前的錯誤策略上呼叫 <xref:ANTLRErrorStrategy%23recoverInline>,以嘗試復原。 如果 <xref:%23getBuildParseTree>true 且 <xref:ANTLRErrorStrategy%23recoverInline> 傳回之符號的標記索引為 -1,則會呼叫 [Token](xref:%23createErrorNode%23createErrorNode[ParserRuleContext%2C] 將符號新增至剖析樹狀結構,然後 <xref:ParserRuleContext%23addErrorNode(ErrorNode)>。

matchWildcard()

將目前的輸入符號比對為通配符。 如果符號類型符合 (也就是值大於 0),則會呼叫 <xref:ANTLRErrorStrategy%23reportMatch> 和 <xref:%23consume> 以完成比對程式。 如果符號類型不相符,則會在目前的錯誤策略上呼叫 <xref:ANTLRErrorStrategy%23recoverInline>,以嘗試復原。 如果 <xref:%23getBuildParseTree> 是 true,且 <xref:ANTLRErrorStrategy%23recoverInline> 傳回之符號的標記索引為 -1,則會呼叫 [Token](xref:Parser%23createErrorNode[ParserRuleContext%2C],將符號新增至剖析樹狀結構,然後 <xref:ParserRuleContext%23addErrorNode(ErrorNode)>。

notifyErrorListeners(string)
notifyErrorListeners(string, Token | null, RecognitionException | undefined)
precpred(RuleContext, number)
pushNewRecursionContext(ParserRuleContext, number, number)

就像 <xref:%23enterRule>,但對於遞歸規則。 將目前內容設為傳入localctx的子系。

removeErrorListener(ANTLRErrorListener<Token>)
removeErrorListeners()
removeParseListener(ParseTreeListener)

從剖析接聽程式清單中移除 listener。 如果 listenerundefined 或尚未新增為剖析接聽程式,則此方法不會執行任何動作。

請參閱 #addParseListener

removeParseListeners()

拿掉所有剖析接聽程式。

請參閱 #addParseListener

reset()

重設剖析器的狀態

reset(boolean)
setProfile(boolean)
unrollRecursionContexts(ParserRuleContext)

建構函式詳細資料

ExpressionAntlrParser(TokenStream)

new ExpressionAntlrParser(input: TokenStream)

參數

input

TokenStream

屬性詳細資料

ARROW

public static ARROW: 27 = 27

屬性值

27

ASTERISK

public static ASTERISK: 6 = 6

屬性值

6

CLOSE_BRACKET

public static CLOSE_BRACKET: 19 = 19

屬性值

19

CLOSE_CURLY_BRACKET

public static CLOSE_CURLY_BRACKET: 24 = 24

屬性值

24

CLOSE_SQUARE_BRACKET

public static CLOSE_SQUARE_BRACKET: 22 = 22

屬性值

22

COLON

public static COLON: 26 = 26

屬性值

26

COMMA

public static COMMA: 25 = 25

屬性值

25

DOT

public static DOT: 20 = 20

屬性值

20

DOUBLE_AND

public static DOUBLE_AND: 12 = 12

屬性值

12

DOUBLE_EQUAL

public static DOUBLE_EQUAL: 9 = 9

屬性值

9

DOUBLE_VERTICAL_CYLINDER

public static DOUBLE_VERTICAL_CYLINDER: 13 = 13

屬性值

13

ESCAPE_CHARACTER

public static ESCAPE_CHARACTER: 37 = 37

屬性值

37

grammarFileName

string grammarFileName

屬性值

string

IDENTIFIER

public static IDENTIFIER: 32 = 32

屬性值

32

INVALID_TOKEN_DEFAULT_MODE

public static INVALID_TOKEN_DEFAULT_MODE: 35 = 35

屬性值

35

LESS_OR_EQUAl

public static LESS_OR_EQUAl: 16 = 16

屬性值

16

LESS_THAN

public static LESS_THAN: 14 = 14

屬性值

14

MORE_OR_EQUAL

public static MORE_OR_EQUAL: 17 = 17

屬性值

17

MORE_THAN

public static MORE_THAN: 15 = 15

屬性值

15

NEWLINE

public static NEWLINE: 33 = 33

屬性值

33

NON

public static NON: 4 = 4

屬性值

4

NOT_EQUAL

public static NOT_EQUAL: 10 = 10

屬性值

10

NULL_COALESCE

public static NULL_COALESCE: 28 = 28

屬性值

28

NUMBER

public static NUMBER: 30 = 30

屬性值

30

OPEN_BRACKET

public static OPEN_BRACKET: 18 = 18

屬性值

18

OPEN_CURLY_BRACKET

public static OPEN_CURLY_BRACKET: 23 = 23

屬性值

23

OPEN_SQUARE_BRACKET

public static OPEN_SQUARE_BRACKET: 21 = 21

屬性值

21

PERCENT

public static PERCENT: 8 = 8

屬性值

8

PLUS

public static PLUS: 2 = 2

屬性值

2

QUESTION_MARK

public static QUESTION_MARK: 29 = 29

屬性值

29

ruleNames

public static ruleNames: string[] = [
		"file", "expression", "primaryExpression", "stringInterpolation", "textContent", 
		"argsList", "lambda", "keyValuePairList", "keyValuePair", "key",
	]

屬性值

string[]

ruleNames

string[] ruleNames

屬性值

string[]

RULE_argsList

public static RULE_argsList: 5 = 5

屬性值

5

RULE_expression

public static RULE_expression: 1 = 1

屬性值

1

RULE_file

public static RULE_file: 0 = 0

屬性值

0

RULE_key

public static RULE_key: 9 = 9

屬性值

9

RULE_keyValuePair

public static RULE_keyValuePair: 8 = 8

屬性值

8

RULE_keyValuePairList

public static RULE_keyValuePairList: 7 = 7

屬性值

7

RULE_lambda

public static RULE_lambda: 6 = 6

屬性值

6

RULE_primaryExpression

public static RULE_primaryExpression: 2 = 2

屬性值

2

RULE_stringInterpolation

public static RULE_stringInterpolation: 3 = 3

屬性值

3

RULE_textContent

public static RULE_textContent: 4 = 4

屬性值

4

serializedATN

string serializedATN

屬性值

string

SINGLE_AND

public static SINGLE_AND: 11 = 11

屬性值

11

SLASH

public static SLASH: 7 = 7

屬性值

7

STRING

public static STRING: 34 = 34

屬性值

34

STRING_INTERPOLATION_START

public static STRING_INTERPOLATION_START: 1 = 1

屬性值

1

SUBSTRACT

public static SUBSTRACT: 3 = 3

屬性值

3

TEMPLATE

public static TEMPLATE: 36 = 36

屬性值

36

TEXT_CONTENT

public static TEXT_CONTENT: 38 = 38

屬性值

38

VOCABULARY

public static VOCABULARY: Vocabulary = new VocabularyImpl(ExpressionAntlrParser._LITERAL_NAMES, ExpressionAntlrParser._SYMBOLIC_NAMES, [])

屬性值

Vocabulary

vocabulary

Vocabulary vocabulary

屬性值

Vocabulary

WHITESPACE

public static WHITESPACE: 31 = 31

屬性值

31

XOR

public static XOR: 5 = 5

屬性值

5

繼承的屬性詳細資料

atn

取得辨識器用於預測的 serializedATN

atn: ATN

屬性值

ATN

繼承自 Recognizer.atn

buildParseTree

在剖析期間追蹤 <xref:ParserRuleContext> 物件,並使用 <xref:ParserRuleContext%23children> 清單加以連結,使其形成剖析樹狀結構。 從開始規則傳回的 <xref:ParserRuleContext> 代表剖析樹狀結構的根目錄。 請注意,如果我們不是建置剖析樹狀結構,規則內容只會指向向上。 當規則結束時,它會傳回內容,但如果沒有人持有參考,就會被垃圾收集。 它指向上,但沒有人指向它。

當我們建置剖析樹狀結構時,我們會將這些內容新增至 <xref:ParserRuleContext%23children> 清單。 內容接著不是垃圾收集的候選專案。

buildParseTree: boolean

屬性值

boolean

繼承自 Parser.buildParseTree

context

context: ParserRuleContext

屬性值

ParserRuleContext

繼承自 Parser.context

currentToken

比對需要傳回目前的輸入符號,這會放入相關聯令牌 ref 的標籤中;例如 x=ID。

currentToken: Token

屬性值

Token

繼承自 Parser.currentToken

EOF

static EOF: number

屬性值

number

繼承自 辨識器.EOF

errorHandler

errorHandler: ANTLRErrorStrategy

屬性值

ANTLRErrorStrategy

繼承自 Parser.errorHandler

inputStream

設定令牌數據流並重設剖析器。

inputStream: TokenStream

屬性值

TokenStream

繼承自 Parser.inputStream

interpreter

設定辨識器用於預測的 ATN 解釋器。

interpreter: ParserATNSimulator

屬性值

ParserATNSimulator

繼承自 Recognizer.解釋器

isMatchedEOF

isMatchedEOF: boolean

屬性值

boolean

繼承自 Parser.isMatchedEOF

isTrace

在剖析期間,有時有助於接聽規則進入和結束事件,以及令牌相符專案。 這是為了快速且骯髒的偵錯。

isTrace: boolean

屬性值

boolean

繼承自 Parser.isTrace

numberOfSyntaxErrors

取得剖析期間報告的語法錯誤數目。 每次呼叫 <xref:%23notifyErrorListeners> 時,都會遞增此值。

請參閱 #notifyErrorListeners

numberOfSyntaxErrors: number

屬性值

number

繼承自 Parser.numberOfSyntaxErrors

parseInfo

parseInfo: Promise<ParseInfo | undefined>

屬性值

Promise<ParseInfo | undefined>

繼承自 Parser.parseInfo

precedence

取得最高優先順序規則的優先順序層級。

precedence: number

屬性值

number

繼承自 Parser.precedence

ruleContext

ruleContext: ParserRuleContext

屬性值

ParserRuleContext

繼承自 Parser.ruleContext

sourceName

sourceName: string

屬性值

string

繼承自 Parser.sourceName

state

指出辨識器已變更與傳入 ATN 狀態一致的內部狀態。 如此一來,我們一律知道我們在 ATN 中的位置,因為剖析器會繼續。 規則內容物件會形成堆疊,讓我們查看叫用規則的堆疊。 結合這一點,而且我們有完整的 ATN 組態資訊。

state: number

屬性值

number

繼承自 Recognizer.state

tokenFactory

tokenFactory: TokenFactory

屬性值

TokenFactory

繼承自 Parser.tokenFactory

方法詳細資料

argsList()

function argsList(): ArgsListContext

傳回

expression()

function expression(): ExpressionContext

傳回

expression(number)

function expression(_p: number): ExpressionContext

參數

_p

number

傳回

file()

function file(): FileContext

傳回

key()

function key(): KeyContext

傳回

keyValuePair()

function keyValuePair(): KeyValuePairContext

傳回

keyValuePairList()

function keyValuePairList(): KeyValuePairListContext

傳回

lambda()

function lambda(): LambdaContext

傳回

primaryExpression()

function primaryExpression(): PrimaryExpressionContext

傳回

primaryExpression(number)

function primaryExpression(_p: number): PrimaryExpressionContext

參數

_p

number

傳回

sempred(RuleContext, number, number)

function sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean

參數

_localctx

RuleContext

ruleIndex

number

predIndex

number

傳回

boolean

stringInterpolation()

function stringInterpolation(): StringInterpolationContext

傳回

textContent()

function textContent(): TextContentContext

傳回

繼承的方法的詳細資料

action(RuleContext | undefined, number, number)

function action(_localctx: RuleContext | undefined, ruleIndex: number, actionIndex: number)

參數

_localctx

RuleContext | undefined

ruleIndex

number

actionIndex

number

繼承自 Recognizer.action

addErrorListener(ANTLRErrorListener<Token>)

function addErrorListener(listener: ANTLRErrorListener<Token>)

參數

listener

ANTLRErrorListener<Token>

繼承自 Recognizer.addErrorListener

addParseListener(ParseTreeListener)

註冊 listener,以在剖析過程中接收事件。 為了支持輸出保留文法轉換(包括但不限於左遞歸移除、自動化左因素處理和優化程式代碼產生),剖析期間對接聽程式方法的呼叫可能與剖析完成之後所使用的 <xref:ParseTreeWalker%23DEFAULT> 呼叫有很大的不同。 特別是,在剖析期間,規則進入和結束事件的順序可能會與剖析器之後不同。 此外,可能會省略特定規則專案方法的呼叫。

在下列特定例外狀況下,接聽程式事件的呼叫 具決定性,也就是對於相同的輸入,接聽程式方法的呼叫會相同。

  • 變更用來產生程式代碼的文法可能會變更接聽程式呼叫的行為。
  • 產生剖析器時傳遞至 ANTLR 4 的命令行選項變更可能會變更接聽程式呼叫的行為。
  • 變更用來產生剖析器之 ANTLR 工具的版本可能會變更接聽程式呼叫的行為。
function addParseListener(listener: ParseTreeListener)

參數

listener

ParseTreeListener

要新增的接聽程式

繼承自 Parser.addParseListener

compileParseTreePattern(string, number)

取得樹狀模式的慣用方法。 例如,以下是範例用法:

let t: ParseTree = parser.expr();
let p: ParseTreePattern = await parser.compileParseTreePattern("<ID>+0", MyParser.RULE_expr);
let m: ParseTreeMatch = p.match(t);
let id: string = m.get("ID");
function compileParseTreePattern(pattern: string, patternRuleIndex: number): Promise<ParseTreePattern>

參數

pattern

string

patternRuleIndex

number

傳回

Promise<ParseTreePattern>

繼承自 Parser.compileParseTreePattern

compileParseTreePattern(string, number, Lexer)

與 [int](xref:%23compileParseTreePattern(String%2C) 相同,但請指定 CommonRegexLexer,而不是嘗試從這個剖析器推斷它。

function compileParseTreePattern(pattern: string, patternRuleIndex: number, lexer?: Lexer): Promise<ParseTreePattern>

參數

pattern

string

patternRuleIndex

number

lexer

Lexer

傳回

Promise<ParseTreePattern>

繼承自 Parser.compileParseTreePattern

consume()

取用並傳回目前符號 。 例如,假設下列輸入 A 為目前的外觀符號,此函式會將游標移至 B,並傳回 A

A B
^

如果剖析器不是處於錯誤恢復模式,則會使用 <xref:ParserRuleContext%23addChild(TerminalNode)>將取用的符號新增至剖析樹狀結構,並在任何剖析接聽程式上呼叫 <xref:ParseTreeListener%23visitTerminal>。 如果剖析器 處於錯誤恢復模式,則會使用 [Token](xref:%23createErrorNode(ParserRuleContext%2C)將已取用的符號新增至剖析樹狀結構,然後在任何剖析接聽程式上呼叫 <xref:ParserRuleContext%23addErrorNode(ErrorNode)> 和 <xref:ParseTreeListener%23visitErrorNode>。

function consume(): Token

傳回

Token

繼承自 Parser.consume

createErrorNode(ParserRuleContext, Token)

如何建立與父系相關聯的令牌的錯誤節點。 一般而言,要建立的錯誤節點不是父系的函式。

function createErrorNode(parent: ParserRuleContext, t: Token): ErrorNode

參數

parent

ParserRuleContext

t

Token

傳回

ErrorNode

繼承自 Parser.createErrorNode

createTerminalNode(ParserRuleContext, Token)

如何建立與父系相關聯的令牌分葉節點。 一般而言,要建立的終端節點不是父系的函式。

function createTerminalNode(parent: ParserRuleContext, t: Token): TerminalNode

參數

parent

ParserRuleContext

t

Token

傳回

TerminalNode

繼承自 Parser.createTerminalNode

dumpDFA()

用於偵錯和其他用途。

function dumpDFA()

繼承自 Parser.dumpDFA

enterLeftFactoredRule(ParserRuleContext, number, number)

function enterLeftFactoredRule(localctx: ParserRuleContext, state: number, ruleIndex: number)

參數

localctx

ParserRuleContext

state

number

ruleIndex

number

繼承自 Parser.enterLeftFactoredRule

enterOuterAlt(ParserRuleContext, number)

function enterOuterAlt(localctx: ParserRuleContext, altNum: number)

參數

localctx

ParserRuleContext

altNum

number

繼承自 Parser.enterOuterAlt

enterRecursionRule(ParserRuleContext, number, number, number)

function enterRecursionRule(localctx: ParserRuleContext, state: number, ruleIndex: number, precedence: number)

參數

localctx

ParserRuleContext

state

number

ruleIndex

number

precedence

number

繼承自 Parser.enterRecursionRule

enterRule(ParserRuleContext, number, number)

一律由產生的剖析器在規則進入時呼叫。 Access 欄位 <xref:%23_ctx> 取得目前的內容。

function enterRule(localctx: ParserRuleContext, state: number, ruleIndex: number)

參數

localctx

ParserRuleContext

state

number

ruleIndex

number

繼承自 Parser.enterRule

exitRule()

function exitRule()

繼承自 Parser.exitRule

getATNWithBypassAlts()

具有略過替代方案的 ATN 成本很高,因此我們很懶散地建立它。 @ 如果目前的剖析器未實作 serializedATN 屬性。

function getATNWithBypassAlts(): ATN

傳回

ATN

繼承自 Parser.getATNWithBypassAlts

getDFAStrings()

用於偵錯和其他用途。

function getDFAStrings(): string[]

傳回

string[]

繼承自 Parser.getDFAStrings

getErrorHeader(RecognitionException)

錯誤標頭是什麼,通常是行/字元位置資訊?

function getErrorHeader(e: RecognitionException): string

參數

e

RecognitionException

傳回

string

繼承自 Recognizer.getErrorHeader

getErrorListenerDispatch()

function getErrorListenerDispatch(): ParserErrorListener

傳回

ParserErrorListener

繼承自 Parser.getErrorListenerDispatch

getErrorListeners()

function getErrorListeners(): Array<ANTLRErrorListener<Token>>

傳回

Array<ANTLRErrorListener<Token>>

繼承自 Recognizer.getErrorListeners

getExpectedTokens()

計算一組輸入符號,這些符號可以分別遵循目前剖析器狀態和內容,如 <xref:%23getState> 和 <xref:%23getContext>所指定。

請參閱 ATN#getExpectedTokens(int, RuleContext)

function getExpectedTokens(): IntervalSet

傳回

IntervalSet

繼承自 Parser.getExpectedTokens

getExpectedTokensWithinCurrentRule()

function getExpectedTokensWithinCurrentRule(): IntervalSet

傳回

IntervalSet

繼承自 Parser.getExpectedTokensWithinCurrentRule

getInvokingContext(number)

function getInvokingContext(ruleIndex: number): ParserRuleContext | undefined

參數

ruleIndex

number

傳回

ParserRuleContext | undefined

繼承自 Parser.getInvokingContext

getParseListeners()

function getParseListeners(): ParseTreeListener[]

傳回

ParseTreeListener[]

繼承自 Parser.getParseListeners

getRuleIndex(string)

取得規則的索引(例如,RULE_ruleName 欄位)或找不到時 -1。

function getRuleIndex(ruleName: string): number

參數

ruleName

string

傳回

number

繼承自 Parser.getRuleIndex

getRuleIndexMap()

從規則名稱到規則索引取得對應。 用於 XPath 和樹狀結構模式編譯。

function getRuleIndexMap(): ReadonlyMap<string, number>

傳回

ReadonlyMap<string, number>

繼承自 Recognizer.getRuleIndexMap

getRuleInvocationStack(RuleContext)

傳回 List<String> 剖析器實例中規則名稱,導致呼叫目前規則。 如果您想要更多詳細資料,例如叫用規則之 ATN 中位置的檔案/行資訊,您可以覆寫 。 這對於錯誤訊息非常有用。

function getRuleInvocationStack(ctx?: RuleContext): string[]

參數

ctx

RuleContext

傳回

string[]

繼承自 Parser.getRuleInvocationStack

getTokenType(string)

function getTokenType(tokenName: string): number

參數

tokenName

string

傳回

number

繼承自 Recognizer.getTokenType

getTokenTypeMap()

從令牌名稱取得對應至令牌類型。 用於 XPath 和樹狀結構模式編譯。

function getTokenTypeMap(): ReadonlyMap<string, number>

傳回

ReadonlyMap<string, number>

繼承自 Recognizer.getTokenTypeMap

inContext(string)

function inContext(context: string): boolean

參數

context

string

傳回

boolean

繼承自 Parser.inContext

isExpectedToken(number)

檢查 symbol 是否可遵循ATN中的目前狀態。 這個方法的行為相當於下列專案,但實作如此一來,就不需要明確建構完整的內容相關追蹤集。

return getExpectedTokens().contains(symbol);
function isExpectedToken(symbol: number): boolean

參數

symbol

number

要檢查的符號類型

傳回

boolean

true 如果 symbol 可以遵循 ATN 中的目前狀態,則為 ,否則 false

繼承自 Parser.isExpectedToken

match(number)

比對目前的輸入符號與 ttype。 如果符號類型相符,則會呼叫 <xref:ANTLRErrorStrategy%23reportMatch> 和 <xref:%23consume> 來完成比對程式。 如果符號類型不相符,則會在目前的錯誤策略上呼叫 <xref:ANTLRErrorStrategy%23recoverInline>,以嘗試復原。 如果 <xref:%23getBuildParseTree>true 且 <xref:ANTLRErrorStrategy%23recoverInline> 傳回之符號的標記索引為 -1,則會呼叫 [Token](xref:%23createErrorNode%23createErrorNode[ParserRuleContext%2C] 將符號新增至剖析樹狀結構,然後 <xref:ParserRuleContext%23addErrorNode(ErrorNode)>。

function match(ttype: number): Token

參數

ttype

number

要比對的令牌類型

傳回

Token

比對符號 @ 如果目前的輸入符號不符合 ttype,而且錯誤策略無法從不相符符的符號復原

繼承自 Parser.match

matchWildcard()

將目前的輸入符號比對為通配符。 如果符號類型符合 (也就是值大於 0),則會呼叫 <xref:ANTLRErrorStrategy%23reportMatch> 和 <xref:%23consume> 以完成比對程式。 如果符號類型不相符,則會在目前的錯誤策略上呼叫 <xref:ANTLRErrorStrategy%23recoverInline>,以嘗試復原。 如果 <xref:%23getBuildParseTree> 是 true,且 <xref:ANTLRErrorStrategy%23recoverInline> 傳回之符號的標記索引為 -1,則會呼叫 [Token](xref:Parser%23createErrorNode[ParserRuleContext%2C],將符號新增至剖析樹狀結構,然後 <xref:ParserRuleContext%23addErrorNode(ErrorNode)>。

function matchWildcard(): Token

傳回

Token

比對符號 @ 如果目前的輸入符號不符合通配符,而且錯誤策略無法從不相符符的符號復原

繼承自 Parser.matchWildcard

notifyErrorListeners(string)

function notifyErrorListeners(msg: string)

參數

msg

string

繼承自 Parser.notifyErrorListeners

notifyErrorListeners(string, Token | null, RecognitionException | undefined)

function notifyErrorListeners(msg: string, offendingToken: Token | null, e: RecognitionException | undefined)

參數

msg

string

offendingToken

Token | null

e

RecognitionException | undefined

繼承自 Parser.notifyErrorListeners

precpred(RuleContext, number)

function precpred(localctx: RuleContext, precedence: number): boolean

參數

localctx

RuleContext

precedence

number

傳回

boolean

繼承自 Parser.precpred

pushNewRecursionContext(ParserRuleContext, number, number)

就像 <xref:%23enterRule>,但對於遞歸規則。 將目前內容設為傳入localctx的子系。

function pushNewRecursionContext(localctx: ParserRuleContext, state: number, ruleIndex: number)

參數

localctx

ParserRuleContext

state

number

ruleIndex

number

繼承自 Parser.pushNewRecursionContext

removeErrorListener(ANTLRErrorListener<Token>)

function removeErrorListener(listener: ANTLRErrorListener<Token>)

參數

listener

ANTLRErrorListener<Token>

繼承自 Recognizer.removeErrorListener

removeErrorListeners()

function removeErrorListeners()

繼承自 Recognizer.removeErrorListeners

removeParseListener(ParseTreeListener)

從剖析接聽程式清單中移除 listener。 如果 listenerundefined 或尚未新增為剖析接聽程式,則此方法不會執行任何動作。

請參閱 #addParseListener

function removeParseListener(listener: ParseTreeListener)

參數

listener

ParseTreeListener

要移除的接聽程式

繼承自 Parser.removeParseListener

removeParseListeners()

拿掉所有剖析接聽程式。

請參閱 #addParseListener

function removeParseListeners()

繼承自 Parser.removeParseListeners

reset()

重設剖析器的狀態

function reset()

繼承自 Parser.reset

reset(boolean)

function reset(resetInput: boolean)

參數

resetInput

boolean

繼承自 Parser.reset

setProfile(boolean)

function setProfile(profile: boolean): Promise<void>

參數

profile

boolean

傳回

Promise<void>

繼承自 Parser.setProfile

unrollRecursionContexts(ParserRuleContext)

function unrollRecursionContexts(_parentctx: ParserRuleContext)

參數

_parentctx

ParserRuleContext

繼承自 Parser.unrollRecursionContexts