lexer

    1热度

    1回答

    我正在尝试使用Antlr v4生成一个简单的自定义语法的词法分析器和解析器。问题是,当我运行Antlr .jar实用程序时,它会生成Lexer文件,但不会生成解析器文件,因为我认为它应该。 简单的语法 // Define a grammar called Hello grammar Hello; r : 'hello' ID ; // match keyword hello followe

    0热度

    1回答

    我在使用ANTLR 4和IntelliJ的第一步。我正在尝试为数学表达式创建一个简单的递归爬山解析器。我得到一个错误 line 1:0 mismatched input '3' expecting {VARIABLE; REALNUM, INTNUM} 好像词法分析器不能正确转3到令牌,解析器使用,但我不能找到问题存在。 词法: lexer grammar testLexer; PLUS:

    0热度

    1回答

    所以我写一个小语言,我使用antlrv4作为我的工具。当你编译你的语法文件(.g4)时,Antlr自动生成词法分析器和解析器文件。我正在使用javac btw。我想我的语言没有分号,我想这样做的方式是:如果在一行中有一个标识符或“)”作为最后一个标记,词法分析器会自动输入分号(类似于“go”语言一样)。我将如何处理这样的事情?在词法分析器文件中还有其他的东西,比如ATN(我认为是扩充的转换网络)和

    0热度

    1回答

    我已经开始学习在ANTLR 4.5中编写一个词法分析器。从this page,作为文档,我看到以下Lexer命令存在:more,pushMode(x),popMode,type(x),channel(x),mode(x),skip。 我还没有能够清楚地了解它们的功能。以下是我的他们每个人的理解不: 跳过 这跳过了已在当前令牌被读取的所有字符。过去的令牌不变。 所以,如果词法分析器已经看了一些人物a

    0热度

    1回答

    我正在使用ANTLR4作为我正在使用的一个类,我似乎很了解它,但我无法弄清楚'+'的作用。我只能说,它通常在括号内的一组字符之后。

    0热度

    2回答

    输入内容: 语法: grammar test; p : EOF; Char : [a-z]; fragment Tab : '\t'; fragment Space : ' '; T1 : (Tab|Space)+ ->skip; T2 : '#' T1+ Char+; 匹配的结果是这样的: [@0,0:6='# abc',<T2>,1:0] <<<<<<<< PLACE

    0热度

    1回答

    我试图在Ocaml中实现一个词法分析器。我最初需要做的一部分是取一个字符串并将它们分割成字符串列表,以便稍后“标记”它们并将其放入解析器中。它需要遵循基本的操作指南,忽略空格,制表符,换行符等。例如: "1 + 25 *(6^2)" 应该返回 ["1"; "+"; "25"; "*"; "("; "6"; "^"; "2"; ")"] 如果字符串的开头可以是多件事情,最长的比赛应该是首选,

    -3热度

    1回答

    我写只有一个关键字是write小的编程语言,我没有做过一个解析器但词法分析器,它工作正常,直到它到达"令牌 。 main.cpp中: #include <iostream> #include <fstream> #include <string> #include <iomanip> #include <vector> using namespace std; int main(in

    0热度

    1回答

    我想了解Lexer(source)我正在移植到JavaScript,并且很难理解来自输入的数据如何读入缓冲区。这是一个标准的Lexer,所以我希望有人可以给我一些提示#919上发生的事情。 片段中的问题: register char *dest = yy_current_buffer->yy_ch_buf; register char *source = yytext_ptr; ... /

    0热度

    1回答

    如何捕捉词法分析器中的异常?在解析器如果规则失败(或不匹配与给定的输入流)ANTLR的会抛出异常,我们可以轻易地捕获这个exception.Catch在Antlr3.Ref词法分析器异常:Error handeling in antlr 3.0 ... attribute : Value1 integer1["Value1"] { System.out.println("Accepte