lexer

    1熱度

    2回答

    使用ANTLR 3,我的詞法有規則 SELECT_ASSIGN: 'SELECT' WS+ IDENTIFIER WS+ 'ASSIGN' WS+ (('TO'|'USING') WS+)? ,這也符合 SELECT VAR1 ASSIGN FOO 但是這不符合 SELECT VAR1 ASSIGN TWO 鑑於我在標準中將TO | USING標記爲可選項。 從生成的Java代碼,

    0熱度

    1回答

    我想研究解釋器和編譯器的基礎知識,使用F#和FsLexYacc庫,但是我很難理解編寫Lexer和Parser文件的原則......我正在關注this example,但它爲iterpreter使用了一些簡單的SQL查詢。我在尋找的是如何使用F#將this grammar轉換爲有效的Lexer和Parser。 如果有幫助,我會包含我的AST,Lexer和Parser文件。 這是AST module

    0熱度

    1回答

    我必須寫一個解析器解析輸入到解析樹,但我跑到一個問題,我的令牌和令牌自動生成。下面的例子是我的問題的簡短版本。這是語法: s : a B a; a : '-' C | C; B : '-' | '+'; C : '1' | '2';> WS : (' ' | '\t' | '\r' | '\n')+ -> skip ; 我輸入:- 1 - 2。 我的輸出

    0熱度

    1回答

    我很難搞清楚如何識別某些文本,前提是後面跟着某些東西。任務是認識AND,OR,和NOT,但如果他們是一個字的一部分: 他們應該在這裏確認: x AND y (x)AND(y) NOT x NOT(x) 但不是在這裏: xANDy abcNOTdef 如果它被空格或括號包圍,則會被識別。如果它位於輸入的開始處,前面是空格,後面跟着空格或括號,則不會被識別。 麻煩的是,如果我將括號作爲

    0熱度

    1回答

    工作分配的要求「非法逃逸的字符串」表達的是: 「非法逃逸字符串:」 +錯誤字符串:當詞法分析器檢測串非法 逃逸。錯誤的字符串是從字符串的開頭到非法轉義的 。 所有支持的轉義序列如下: \ b退格 \˚F換頁 \ r回車 \ n換行 \噸水平標籤 \」單引號 \」雙引號 \反斜槓 我使用的代碼爲 「字符串」 作爲同這個帖子推薦: ANTLR4 - Need an explanation on thi

    0熱度

    1回答

    所以,我對於字符串此詞法規則: STRINGLIT:「'(( '\'[\ 」bftrn])|〜[\ n \「 ])*'''; 例如,輸入​​,我希望abc,<EOF>丟棄" 我讀到這裏http://www.antlr2.org/doc/lexer.html,您可以使用! operator。然後,我會有: STRINGLIT:'''!((''''''''')'〜'['n'「])*'」'! ; 但是,

    0熱度

    1回答

    我在我的g4文件中遇到了一些困難。下面是我的語法: // Define a grammar called Hello grammar GYOO; program : 'begin' block+ 'end'; block : statement+ ; statement : assign | print | add | ifs

    0熱度

    2回答

    我有3種類型的數字,數字,小數和百分比。 Percentage : (Sign)? Digit+ (Dot Digit+)? '%' ; Number : Sign? Digit+; Decimal : Sign? Digit+ Dot Digit*; 百分比和小數做工精細,但當我給你一個數字,除非我把一個符號(+或 - )在號碼前面,它不承認它是一個號碼。 number foo = +5 //

    0熱度

    1回答

    我目前使用antlr4來構建一個解析器,但我遇到了一個問題,我盡我所能,但沒有弄清楚。你能幫我解釋並解決嗎? # grammer file : PluginDoc.g4: grammer PluginDoc pluginDef : pluginName | pluginDesc; pluginName : PluginName IDENTIFIER; pluginDesc : Plug

    0熱度

    2回答

    我正在使用ANTLR 4.7。 輸入如下: [section a] bla bla bla [section b] <<<<<<< to ignore bla bla bla <<<<<<< to ignore [section c] bla bla bla 如何igonre在[section b]的全部內容? 目前,我使用的是詞法規則如下圖所示: Section_Igonre