首页 文章
  • 0 votes
     answers
     views

    我想创建与Java相同的JVM语言,但有一些特定的指令[暂停]

    我的应用程序使用Metamodel,我创建了Class,描述类和对象,大量使用多态(类似于JPA元模型) . 对于在Java中操作这个对象我需要编写很多代码 . 而不是我想创建一个特定的语言,我可以做object.subobjects [] . foreach(o - > )而不是写大量的读取字段检查类型 . 通过翻译大型Java代码上的一些特定指令,预编译也可以完成这项工作 . 谢谢你的...
  • 0 votes
     answers
     views

    内联注释和antlr4语法中的空行

    请任何人解释我,我需要改变我的语法,以支持内联注释(如 // some text )和空行(包含任意数量的空格字符) . 我写了下面的语法,但这不起作用 . program: line* EOF ; line: (expression | assignment) (NEWLINE | EOF); assignment : VARIABLE '=' expression ; expression :...
  • 1 votes
     answers
     views

    在ANTLR4期望的无关输入'-'

    你能告诉我可能是什么问题吗?它期待 {<EOF>, '(', NUMBER, VARIABLE} ,但如果我在 - 之后插入此规则,我得到了同样的错误 . grammar Grammar; @header { package parser; } program: line* EOF ; line: (expression | assignment) ('\n' | EOF)...
  • 6 votes
     answers
     views

    创建一个简单的领域特定语言

    我很想知道如何创建特定于域的语言 . 现在域是非常基本的,只是有一些变量并运行一些循环,if语句 . 编辑:语言将以非英语为基础,语法非常简单 . 我正在考虑将Java虚拟机作为目标,即编译为Java字节代码 . 目前我知道如何使用ANTLR编写一些简单的语法 . 我知道ANTLR会创建一个词法分析器和解析器但是我该如何从这里前进? 关于语义分析:它是必须手动编写还是有一些工具来创建它? ...
  • 1 votes
     answers
     views

    创建JVM语言

    因此,对于在学校的作业,我必须尝试开发在JVM上运行的 very basic (无需使其高级)语言 . 我已经用ANTLR创建了一个语法,并用它生成了一个解析器和词法分析器 . 现在,对于"compile to JVM bytecode"部分,我有点迷茫 . 我看着ASM和Jasmin,我有可能!谢谢! P.S:我应该使用ANTLR访客还是听众?
  • 1 votes
     answers
     views

    如何在antlr4中修复无关的输入' '

    你好,当使用以下输入运行antlr4时,我得到以下 error 图像显示问题 [ 我一直试图通过在这里和那里做一些改变来解决它,但它似乎只有 write component whileLoop new line . 你能告诉我我是 missing here 以及为什么问题 persits ? grammar AM; COMMENTS : '{'~[\n|\r]*'}' ->...
  • 124 votes
     answers
     views

    Antlr的优点(相比之下,lex / yacc / bison)[关闭]

    我过去曾经使用过lex和yacc(更常见的是bison)用于各种项目,通常是翻译(例如EDIF的子集流入EDA应用程序) . 另外,我必须支持基于几十年前的lex / yacc语法的代码 . 所以我知道我的工具,虽然我不是专家 . 我在过去的各种论坛上看过关于Antlr的积极评论,我很好奇我可能会缺少什么 . 因此,如果您同时使用了两者,请告诉我Antlr中哪些更好或更先进 . 我目前的限制是我在...
  • 71 votes
     answers
     views

    使用ANTLR 3.3?

    我正在尝试使用ANTLR和C#,但由于缺少文档/教程,我发现它非常困难 . 我找到了几个旧版本的半心半意的教程,但似乎从那时起对API进行了一些重大改动 . 谁能给我一个简单的例子来说明如何创建语法并在短程序中使用它? 我终于设法将我的语法文件编译成词法分析器和解析器了,我可以在Visual Studio中编译和运行那些(在重新编译ANTLR源之后,因为C#二进制文件似乎也已经过时了! - 更不用...
  • 7 votes
     answers
     views

    将抽象语法树转换为字节代码

    我正在努力学习构建一个简单的编译器作为业余爱好 . 我的目标是Java虚拟机 . 我使用ANTLR插件为Eclipse编写了一个简单的语法 . 有人告诉我,Antlr生成的AST上有一个称为方法节点的东西,必须调用它 . 我打算用ASM生成字节码 . 那么什么是方法节点?如何从ASM调用它并使其访问方法指令? 那么编译器的语义分析器呢?应该手动编写还是有任何生成器?
  • 4 votes
     answers
     views

    Antlr错误:以下令牌定义永远不能匹配,因为先前的令牌匹配相同的输入

    我用antlr扭曲一个简单的语言,我在AntlrWorks中定义了一个Lexer语法,但是当我想生成java代码时,它给了我错误: Antlr错误:以下令牌定义永远不能匹配,因为先前的令牌匹配相同的输入:FLOAT_OR_INT,OPEN_PAR,CLOSE_PAR,....(几乎适用于所有规则!) 我是antlr的新手,我认为这是因为规则位置的顺序,但我不知道他们应该怎么做,我的错误是什么? 这...
  • 7 votes
     answers
     views

    ANTLR语法在Visual Studio中突出显示DSL

    我有一个定义DSL(特定于域的语言)的ANTLR语法 . 这个语法相对简单 . 它正在解析语言并输出C代码以创建一个非常基本的翻译器 . 这种语言用于C#应用程序(键入某种控件,无论是RichTextBox还是自定义控件),一种要求是为此语言提供语法高亮显示 . 我已经浏览了互联网,希望能找到关于如何实现这一目标的某种信息,或者找到一种工具来让自己变得更容易 . 在没有找到太多信息之后,我最好的假...
  • 0 votes
     answers
     views

    在后台修改普通的ANLTR文件

    我想通过在后台以编程方式添加一些Java代码来修改语法文件 . 我的意思是考虑你有一个println语句,你想在ANTLR工作之前将它添加到语法中(即创建词法分析器和解析器文件) . 我有这个简单的代码: {System.out.println("print");} 这是我想在'expr'之后的'prog'规则中添加上述片段的简单语法:之前: grammar Expr; ...
  • 2 votes
     answers
     views

    除了ANTLR之外,还有哪些其他工具可以帮助我创建一个针对JVM的小语言? [关闭]

    (几天前我和ANTLR开始了我的语言冒险 . 我对语言理论和编译器构造的了解非常有限 . 如果这不是一个有效的问题,请原谅 . ) ANTLR是一个解析器生成器,具体来说,是一个 ALL(*) 解析器 . 根据here,解析器是: 编译器中试图对语法进行语法感知的部分 . AFAIK编译器应由5个阶段组成: 词法分析 语法分析 语义分析 IL表示和优化 代码生成 所以A...
  • 0 votes
     answers
     views

    Antlr用于多语言生成

    这个post about the antlr simple example显示了如何为java创建和使用语法 . 但是,这会混合Exp.g源中的语法和Java源代码 . 我的问题是,是否可以将语法文件与目标语言分离,以便一个语法文件可用于生成多个Java,Scala,C等Lexer / Parsers?
  • 46 votes
     answers
     views

    如何用ANTLR4创建AST?

    我一直在寻找很多关于这一点,我找不到任何有用的,真正帮助我 Build 一个AST . 我已经知道ANTLR4不像以前的ANTLR3那样构建AST . 每个人都说:“嘿,使用访客!”,但我找不到任何示例或更详细的解释如何我这样做... 我的语法必须像C一样,但每个命令都用葡萄牙语(portuga编程语言)编写 . 我可以使用ANTLR4轻松生成解析树 . 我的问题是:现在我需要做些什么才能创建AS...
  • 6 votes
     answers
     views

    什么是ANTLR中的树解析器,我被迫写一个?

    我正在为ANTLR中的一小部分C编写一个词法分析器/解析器,它将在Java环境中运行 . 我是语言语法世界的新手,在许多ANTLR教程中,他们创建了一个AST - 抽象语法树,我被迫创建一个,为什么?
  • 38 votes
     answers
     views

    如果ANTLR中的/ else语句使用侦听器

    我正在为学校项目创建一个简单的编程语言 . 我正在使用ANTLR 4从我的语法生成词法分析器和解析器 . 到目前为止,我一直在使用ANTLRs监听器模式来应用编程语言的实际功能 . 现在我想实现if / else语句,但是我不确定在使用监听器模式时这些实际上是可以实现的,因为ANTLR决定在使用监听器时遍历解析树的顺序,我想是if /的实现else语句将要求在解析树周围跳转,具体取决于语句中的条件...
  • 0 votes
     answers
     views

    动态解析器编译成JVM字节码

    我需要实现一个能够在Seco中运行的动态解析器生成器(小型IDE可以像Mathematica一样运行基于单元格的笔记本) . ANTLR或任何其他解析器生成器能够将String中的语法(预选单元格的内容)动态编译为JVM字节码吗?我的意思是立即将语法描述编译成可执行的解析器对象 . 最好不要使用临时文件和调用 System("java -jar antrl grammar.g"...
  • 1 votes
     answers
     views

    如何在Antlr4中检测解析树中的空格?

    当规则在antlr4中匹配,并且您获得该规则的文本时,空格通常被词法分析器删除 WS: [ \n\t\r]+ -> skip; 是否有可能在解析树访问者中询问“此规则是否跳过任何空格?” 例如 . WS: [ \n\t\r]+ -> skip; ALPHA: [a-z]; NUMERIC: [0-9]; myrule: (ALPHA | NUMERIC)+; 然后在访客(我正在使...
  • 283 votes
     answers
     views

    词法分析者与解析者

    词法分析器和解析器在理论上真的有那么不同吗? 讨厌正则表达式似乎很时髦:coding horror,another blog post . 但是,流行的基于lexing的工具:pygments,geshi或prettify,都使用正则表达式 . 他们好像有什么东西...... 什么时候足够兴奋,什么时候需要EBNF? 有没有人使用这些词法分析器生成的令牌与野牛或antlr解析器生成器?
  • 0 votes
     answers
     views

    在lexer或parser之间决定要求?

    我需要将我编写的简单规则转换为.net程序集 . 规则在语法上非常简单 . 它是一堆if-then语句,具有以下结构: if <conditions> then <return-string> 我已经制定了一个必要的程序,但由于条件可能变得复杂并且添加/删除了新的操作,我建议使用antlr . 在解析输入规则文本之后,我通常使用System.CodeDom来创建等效的c#...
  • 0 votes
     answers
     views

    如何编写语法或词法分析器规则来描述ANTLR中的JSP / EL标识符或字符串文字?

    如何编写语法或词法分析器规则来描述ANTLR中的JSP / EL标识符或字符串文字?请记住,JSP / EL是Unicode,您无法在规则中列出所有可能的符号 . 还要记住,字符串可以包含EL表达式,这可能很复杂,因此词法分析器不足以描述它们,解析器是必需的,而ANTLR解析器无法匹配字符类或任何字符 .
  • 3 votes
     answers
     views

    使用ANTLR 3的C#语法

    我现在正在使用基于this grammar file的Antlr 3编写C#语法 . 但是,我发现了一些我无法理解的定义 . NUMBER: Decimal_digits INTEGER_TYPE_SUFFIX? ; // For the rare case where 0.ToString() etc is used. GooBall @after { Commo...
  • 4 votes
     answers
     views

    编写对空格敏感的解析器规则,同时从词法分析器中跳过WS

    我在处理空白方面遇到了一些麻烦 . 在下面的语法摘录中,我设置了词法分析器,以便解析器跳过空格: ENTITY_VAR : 'user' | 'resource' ; INT : DIGIT+ | '-' DIGIT+ ; ID : LETTER (LETTER | DIGIT | SPECIAL)* ; ENTITY_ID : '__' ENTITY_VAR ('_w_...
  • 3 votes
     answers
     views

    ANTLR词法分析器规则中的句法谓词

    简介 看一下这个文档,ANTLR 2曾经有一个名为predicated lexing的东西,有这样的例子(受Pascal启发): RANGE_OR_INT : ( INT ".." ) => INT { $setType(INT); } | ( INT '.' ) => REAL { $setType(REAL); } | I...
  • 0 votes
     answers
     views

    使用ANTLR4在语法中排序词法分析器规则

    我已经阅读了非常有用的ANTLR Mega Tutorial但我仍然坚持如何正确地订购(和/或写)我的词法分析器和解析器规则 . 我希望解析器能够处理这样的事情: 你好“姓名”,你好吗? 在运行时,我将用用户名替换“<< name >>” . 所以我主要解析文本单词(和标点符号等),除了偶尔出现的“<< something >>”标签,我在lexer...
  • 0 votes
     answers
     views

    Antlr - 是否有任何正式的解释,为什么首先定义的词法分析器规则对后面定义的解析器规则不可见?

    最初的 Headers 问题是:为什么我的词法分析器规则不起作用,直到我将其更改为解析器规则?以下内容与此问题有关 . 然后我找到了新的信息并更改了 Headers 问题 . 请看我的评论! 我的Antlr语法(只有“空格”规则,它的使用很重要): grammar MyTest; Space: ' '; Tab: '\t'; Break: '\n'; ...
  • 1 votes
     answers
     views

    Antlr词法分析器匹配意外的规则

    我正在重新学习一些基本的Antlr并尝试编写语法来生成待办事项: Meeting at 12pm for 20 minutes 我遇到的问题是,特别是三个词法分析器规则“不匹配”取决于它们使用的上下文: HOUR: [0-9]|'1'[0-9]|'2'[0-3]; MINUTE: [0-5][0-9]; NONZERO_NUMBER: [1-9][0-9]*; 在某些情况下,我希望 12 匹配...
  • 1 votes
     answers
     views

    使用ANTLR4解析公式

    我试图使用ANTLR4将数学公式解析为LaTeX的子集 . 例如,它应该将 (a+4)/(b*10) 解析为 \frac{a+4}{b\cdot 10} . 我的简单语法创建了一个这样的树: 现在我试图实现解析树监听器,以便在遍历树时以某种方式构造LaTeX字符串 . 在这里,我失败了,因为要构造一个像 \frac{}{} 这样的字符串,它必须以递归方式构建 . 然而,解析树步行者会一个接一个...
  • 0 votes
     answers
     views

    Antlr4浮点解析

    我有以下antlr4代码: decnum returns [double value] : NUMBER {$value = Double.parseDouble($NUMBER.text);} ; POINT : '.'; INTNUMBER : ('0'..'9')+ ; NUMBER : INTNUMBER (POINT INTNUMBER)?; 当我在 String s...

热门问题