2 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
仁寫道:
...這兩個(gè)語句在ANTLR中有什么實(shí)際區(qū)別...
MY_RULE將用于標(biāo)記您的輸入源。它代表了您語言的基本組成部分。
my_rule 從解析器中調(diào)用,它由零個(gè)或多個(gè)其他解析器規(guī)則或詞法分析器生成的標(biāo)記組成。
就是這樣。
仁寫道:
它們會(huì)導(dǎo)致不同的AST樹嗎?不同的表現(xiàn)?...
解析器使用詞法分析器生成的令牌來構(gòu)建AST,因此這些問題對我而言毫無意義。詞法分析器僅向解析器“饋送”一維令牌流。

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
這篇文章可能會(huì)有所幫助:
詞法分析器負(fù)責(zé)第一步,唯一的工作是從文本創(chuàng)建“令牌流”。它不負(fù)責(zé)理解您語言的語義,僅對理解您語言的語法感興趣。
例如,語法是一個(gè)規(guī)則,即標(biāo)識符必須僅使用字符,數(shù)字和下劃線-只要它不以數(shù)字開頭。詞法分析器的職責(zé)是了解此規(guī)則。在這種情況下,詞法分析器將接受字符“ asd_123”的序列,但拒絕字符“ 12dsadsa”(假設(shè)沒有另一條規(guī)則適用于此文本)。當(dāng)看到有效的文本示例時(shí),它可能會(huì)向令牌流中發(fā)送令牌,例如IDENTIFIER(asd_123)。
請注意,我說的是“標(biāo)識符”,是諸如變量名,函數(shù)名,名稱空間名稱等之類的通用術(shù)語。解析器將是能夠理解該標(biāo)識符出現(xiàn)的上下文的事物,以便其進(jìn)一步指定該令牌作為某物的名稱。
(旁注:令牌只是賦予令牌流元素的唯一名稱。lexeme是匹配令牌的文本。我將lexeme寫在令牌旁邊的括號中。例如NUMBER(123)。在這種情況下,這是一個(gè)數(shù)字標(biāo)記,其詞素為'123'。但是,對于某些標(biāo)記(例如運(yùn)算符),我省略了詞素,因?yàn)樗嵌嘤嗟?。例如,我將為分號?biāo)記而不是SEMICOLON( ;))。
- 2 回答
- 0 關(guān)注
- 820 瀏覽
添加回答
舉報(bào)