首页 文章
  • 0 votes
     answers
     views

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

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

    ANTLR4 Lexer匹配线路终点线的开始

    如何在ANLTR4词法分析器中实现Perl正则表达式^和$?即 . 匹配行的开头和行的结尾而不消耗任何字符 . 我试图使用ANTLR4词法分析器来匹配行开头的#字符,但不是在行的中间 . 例如,要隔离并抛弃所有C预处理程序指令,而不管它是什么指令而忽略#在内部字符串字面量 . (通常我们可以对C字符串文字进行标记,以消除出现在行中间的#,但假设我们没有这样做) . 这意味着我只想指定# . *?...
  • 1 votes
     answers
     views

    在ANTLR 4中的词法分析器和解析器规则中'\n'的模糊引用

    First: This is not a syntactic error! My grammar file does not contain any error! 我想为我的程序编写一个C#语法 . 我从CodePlex下载了这个语法:ANTLR C# 4.0 Grammar我没有找到更好的AN#4语法C#语法 . 这个语法不支持对我的程序非常重要的文档注释 . 这个语法会跳过所有注释,因此我删除...
  • 0 votes
     answers
     views

    使用INT和FLOAT进行意外的ANTLR4优化?

    我正在使用 ANTLR 4 为 Clasp 的输出编写解析器 . 典型输出如下: clasp version 3.0.3 Reading from stdin Solving... Answer: 1 bird(a) bird(b) bird(c) penguin(d) bird(d) Optimization: 7 0 Answer: 2 bird(a) bird(b) bird(c) peng...
  • 1 votes
     answers
     views

    ANTLR 4语法给出了无关的输入错误

    我试图创建一个(我认为)是一个简单的语法来处理包含键/值赋值列表的文件;每行一个任务 . 我在过去(90年代中期)使用过ANTLR,并决定再次使用它,因为我想在赋值文件和Unicode关键字和值中提供注释 . 我的简单测试文件再次证明,即使使用好的工具,编写正确的语法也是一个难题 . 我正在使用ANTLR Language Support Plug-in for VS 2012并在C#中进行开发 ...
  • 2 votes
     answers
     views

    antlr4中的mincaml语法

    我想在antlr4中编写mincaml解析器 . github(https://github.com/esumii/min-caml/blob/master/parser.mly) . 日本网站:http://esumii.github.io/min-caml/ . 这是antlr 4代码 . grammar MinCaml; simple_exp: #simp...
  • 0 votes
     answers
     views

    如何匹配ANTLR 4中的任何非换行符?

    我想知道如何匹配语法中的非换行符,其中换行符是终端,希望使用它来匹配,例如,可能包含数字标点符号的 Headers 文件等等 . 我现在正在使用的语法是: grammar ABCHeaderNew; import Configuration; root: header EOF; header: index title; index: 'X:' INDEX stop+; title: 'T:'...
  • 0 votes
     answers
     views

    将getCharPositionInLine()与ANTLR4中的前导空格一起使用

    我正在为一个基于VBScript的脚本编写语法 . 在脚本中,变量赋值以 i=10 的常规方式完成,另外还有一个变体: Set i=10 方法调用可以通过几种方式与对象上的调用方法一起完成,例如: Another(10).Call(20).Chain(30) 我认为'Set'是我语法中的关键词 . 但是,在某些预定义的calsses中,允许开发人员将方法命名为'Set',因此,可能会调用(让我将其...
  • 1 votes
     answers
     views

    具有重要空白的Antlr语法,重用注释符号

    我正在尝试为众所周知的MUD脚本语言创建语法 . 我正在努力解决一些问题,主要涉及空白,重用关键字以及使用注释符号的命令 . 如果这很重要的话,我的目标很快 . 任何帮助,将不胜感激! 我正在使用此处找到的Swift-Target:https://github.com/janyou/ANTLR-Swift-Target 具体问题: 如何匹配行开头的命令,然后捕获所有文本,直到匹配换行符(可能与...
  • 0 votes
     answers
     views

    ANTLR语法匹配以#开头的注释行

    我试图将下面的文本与ANTLR语法匹配: ANTLR语法是: grammar header; start : commentBlock EOF; commentBlock : CommentLine+; CommentLine : '#' AsciiChars+; AsciiChars : [a-zA-Z]; fragment CR : '\r'; fragment L...
  • 0 votes
     answers
     views

    在后台修改普通的ANLTR文件

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

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

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

    如何在JVM上执行它? (Lexer&Parser with Antlr)

    我想在JVM上创建自己的编程语言 第一步我试着写一个非常简单的陈述(添加例如3 7) 所以我用Antlr创建了一个词法分析器和一个解析器 grammar gr; formula : Digit Add Digit Equal; Digit : '0'..'9' ; Add : '+'; Equal : '='; WS : [\t\r\n]+ -> ...
  • 0 votes
     answers
     views

    antlr4 lexer规则不匹配字符串

    如何编写antlr4语法词法分析器规则以匹配字符串 . 例如,我有以下输入字符串: CREATE TABLE person ( age integer, id integer, name character varying(30)), PRIMARY KEY ( id ) ); 在这里,我需要跳过上面包含“PRIMARY KEY”约束的创建表查询 . 我们可以直接在词法分析器规则中...
  • 1 votes
     answers
     views

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

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

    ANTLR4 RegEx词法分析器模式

    我正在为XSD内的RegEx工作一个Regx解析器 . 我之前的问题在这里被描述:ANTLR4 parsing RegEx 我从那以后拆分了Lexer和Parser . 现在我在解析括号内的parantheses时遇到问题 . 它们应被视为括号内的字符和外部的分组标记 . 这是我的词法分析器语法: lexer grammar RegExLexer; Char : ALPHA ; Int ...
  • 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)+; 然后在访客(我正在使...
  • 0 votes
     answers
     views

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

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

    ANTLR:简单语法的输入不匹配

    我有这样的语法来生成一个解析器: grammar MyLang; init: TERMINAL; TERMINAL: '"' ~('"')* '"'; 使用ANTLR4和上面的语法来解析像“data”这样的简单输入,我遇到了一个错误: mismatched input "data" expecting TERMINAL 我已经阅读了许多针对...
  • 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...
  • 17 votes
     answers
     views

    导入后ANTLR4语法标记识别错误

    我使用parser grammar和lexer grammar来自GitHub的antlr4来解析Python3中的PHP . 当我直接使用这些语法时,我的PoC代码可以工作: antlr-test.py from antlr4 import * # from PHPParentLexer import PHPParentLexer # from PHPParentParser import PH...
  • 0 votes
     answers
     views

    ANTLR4:我无法理解的意外行为

    我对 ANTLR4 很新,我正在努力 Build 自己的语言 . 所以我的语法开始于 program: <EOF> | statement | functionDef | statement program | functionDef program; 我的 statement 是 statement: selectionStatement | compoundStatement |...

热门问题