antlr3

    0熱度

    1回答

    我是ANTLR的新手,無法使用操作打印令牌。我有以下的語法文件: grammar SimpleGrammar; options { language = C; } prog : string { printf("hello\n"); printf($string.text); }; string : LETTER+; LETTER : ('a'..'b' | 'A'..'B')

    4熱度

    1回答

    我正在爲我的編譯器類編寫一個簡單的解析器(僅僅是我可以使這些工具工作的一個概念證明),並且正在使用帶有python綁定的ANTLR。我已經得到了我們平凡的語法來正確標記和解析,但我也想以自定義的方式處理錯誤。按照ANTLR文檔(更具體:http://www.antlr.org/wiki/display/ANTLR3/Error+reporting+and+recovery),我可以把我的語法文件下

    1熱度

    1回答

    我使用python(一種可以接受ID列表中的數字列表的語法)在ANTLR中創建了一個小文法,但是當我輸入字符串(如December 12 1965)時,ANTLR將在該文件上運行並顯示 grammar ParserLang; options { language=Python; } @header { import sys import antlr3 from Pars

    5熱度

    1回答

    我有一個antlr詞法分析規則的一個奇怪的副作用,我創建了一個(幾乎)最小的工作示例來演示它。 在這個例子中,我想匹配字符串[0..1]例如。但是當我調試語法時,到達解析器的令牌流只包含[..1]。第一個整數,無論​​它包含多少個數字總是被消耗,我不知道如何發生。如果我刪除FLOAT規則,一切都很好,所以我猜這個錯誤在某個地方。但由於它不應該匹配[0..1]中的任何內容,所以我很困惑。 我很樂意爲

    1熱度

    2回答

    我試圖根據它的上下文修改規則,儘可能少地複製/粘貼。我會用最好的我想要實現的僞變種開始: module[boolean isParam]: 'module' id=identity? declaration+ update+ 'endmodule' -> ^(MODULE ({if (isParam)} IS_PARAMETER {else} $id) decl

    0熱度

    1回答

    我正在嘗試爲支持Unicode的小型DSL編寫antlr3語法(德語變音符號需要),但似乎無法使其工作。 我寫的應該是匹配的Unicode字符的任意序列的最小測試語法,如「XAY」(這只是正常)或「XAY」(不) 這裏的語法: grammar X; @lexer::header { import org.antlr.runtime.ANTLRInputStream; import org.

    1熱度

    2回答

    我想解決如何處理ANTLR中的含糊之處。 我需要正確解析大小前綴的標識符或標識符。 首先,我想出了這個車語法 grammar PrefixProblem; options { language = Java; } goal: (size_prefix ':')? id; size_prefix: B; id: LETTER+; LETTER: 'A'..'Z' ; B:

    2熱度

    1回答

    我爲字符串變量聲明編寫了以下語法。字符串的定義與單引號之間的任何內容一樣,但必須通過使用$字母來轉義字符串值來添加單引號。 grammar test; options { language = Java; } tokens { VAR = 'VAR'; END_VAR = 'END_VAR'; } var_declaration: VAR s

    1熱度

    1回答

    我要創建一個詞法分析器將例如接受僅當它具有最大的8位的整數。在這裏做一個替代方案,而不是像這樣寫嗎? INTEGER : (DIG | DIG DIG | DIG DIG DIG | ...)

    1熱度

    1回答

    總之:如何在ANTLR中實現動態變量? 我再次來找你一個基本的ANTLR問題。 我有這樣的語法: grammar Amethyst; options { language = Java; } @header { package org.omer.amethyst.generated; import java.util.HashMap; } @lexer