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