lexer

    2热度

    1回答

    我正在使用ANTLR4为某些JavaScript预处理器(基本上它标记一个JavaScript文件并提取每个字符串文本)生成一个Lexer。 我使用了最初为Antlr3制作的语法,并为v4导入了相关部分(只有词法分析规则)。 我只有一个单一的问题,其余的:我不知道如何处理极端案例以正则表达式的文字,像这样: log(Math.round(v * 100)/100 + ' msec/sample')

    2热度

    1回答

    我在这个新的,所以我不知道为什么,我需要使用这些指令 %option nounput %option noinput 是啊,我知道,否则我就会有这些警告: lex.yy.c:1237:17: warning: ‘yyunput’ defined but not used [-Wunused-function] static void yyunput (int c, register

    -1热度

    1回答

    我一直在尝试Ply example calculator from Github。 当我运行计算器时,它运行在REPL内部。我将如何使用Ply来一次一个地评估多个表达式。 例如,如果我进入3+4的REPL做到这一点: calc > 3+4 7 calc > 如果我进入4+3 6+2的REPL做到这一点: calc > 4+3 6+2 Syntax error at '6' 2 cal

    2热度

    2回答

    我正在第一次编写词法分析器/扫描程序,并且遇到了拆分输入字符串的问题。 实施例: val result = "func add(Num x, Num y) = x+y;".split(???) result == Array("func", "add", "(", "Num", "x", ",", "Num", "y", ")", "=", "x", "+", "y", ";") 但问题是,

    1热度

    1回答

    我知道如何添加标记定义与标识符: this->self.add(identifier, ID_IDENTIFIER); 而且我知道如何添加标记定义与语义动作: this->self += whitespace [ lex::_pass = lex::pass_flags::pass_ignore ]; 不幸的是,这并不工作: this->self.add(whitespace

    2热度

    1回答

    目前正在开发一个小型的宠物项目,数学解析器/词法分析器,并最终为求解/学习而求解。我已经制定了一个基本的原型,现在正在将其转换为TypeScript来清理。对于那些感兴趣的原型可以在这里找到https://github.com/chips5k/math-solver-prototype。 我试图想出一个干净的基于界面的方法来处理我的令牌。我怀疑我看错了这个方式,但希望有人能提供有用的建议。 在我的

    0热度

    1回答

    我有一个JavaScript文件index.js。 我正在开发一个用Python编写的工具,它静态导航JavaScript代码以检查是否定义了某个API。 为了开发它,我需要一个存储 [variable, value]的数据结构(表)。 这里是JavaScript代码的例子。 var a = "hello"; var b = "hi"; a = "world"; var c= certai

    0热度

    1回答

    你好从ecmascript specifications UnicodeIDStart:: any Unicode code point with the Unicode property "ID_Start" UnicodeIDContinue:: any Unicode code point with the Unicode property "ID_Continue"

    2热度

    1回答

    我想用Antlr开发一种新语言。下面是我的语法文件: grammar test; program : vr'.' to'.' e ; e: be | be'.' top'.' be ; be: 'fg' | 'fs' | 'mc' ; to: 'n' | 'a' | 'ev' ; vr: 'er' |

    1热度

    1回答

    我试图在Racket中编写一个忽略行注释的词法分析器(即,从开头#开始,直到行结束)。该行的末尾,在我的脑海里,可能是因为存在#\newline或(eof),但显然以下为(eof)不起作用在这个位置上是无效的: (define comment-lexer (lexer [(:or #\newline (eof)) (cons `(COMMENT) (main-lexe