问题标签 [lexical-analysis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
138 浏览

string - 如何在规则中排除多个字符?

我正在尝试在 ANTLRWorks 中编写字符串匹配规则,我需要匹配转义引号或任何非引号字符。我可以匹配转义的引号,但我在另一部分遇到问题:~'\'' | ~'\"'最终会匹配所有内容,并且~'\'\"'似乎被语法生成器忽略(至少是视觉显示)。什么样的字符序列可以得到我想要的?

0 投票
2 回答
335 浏览

vim - 什么构成vim中的“单词”?

假设我们在 vim atm 中有以下内容:

在 vim 中,w将一个单词向右移动,但究竟什么是“单词”?


例如,如果我将光标放在pof上printf,按wu 到(并按另一个会w跳过 the"并将光标放在hof 上hello。为什么被"跳过了?

w现在按另一个将您带到另一个")然后按另一个w将您带到下一行。为什么);跳过了?

现在光标在rreturn。按 aw将光标移到上0,按另一个w现在将光标移到 上;。所以在这种情况下,;与前一行不同,没有跳过。为什么是这样?


我希望我的问题足够清楚,但我只是想了解这一切是如何运作的。

0 投票
1 回答
242 浏览

javascript - ECMAScript 5 规范中可能存在拼写错误?

有谁知道为什么在ECMA-262 第 5 版规范的第 7.6 节末尾,非终结符UnicodeLetterUnicodeCombiningMarkUnicodeDigitUnicodeconnectorPunctuationUnicodeEscapeSequence后面没有两个冒号?

从第 5.1.6 节开始:

非终结符以斜体显示。非终结符的定义是通过定义的非终结符的名称后跟一个或多个冒号来引入的。(冒号数表示产生式属于哪个语法。)

由于词汇产生的区别在于有两个冒号,并且这是在“词汇约定”下,我假设它们的意思是把冒号放进去。这听起来对吗?

只要确保这些确实是非终结符并且它们确实是词汇语法的一部分。

编辑

我注意到有人投票结束了这个。只是为了说明为什么这是与编程相关的,它与任何想要实现 ECMAScript 解释器的人相关。

0 投票
2 回答
1160 浏览

parsing - lex/yacc 和解析器/扫描器

lex 和 yacc 应该一起使用。

哪个是扫描仪,哪个是解析器?

哪个创建扫描仪,哪个创建解析器?

0 投票
1 回答
81 浏览

parsing - 在我的符号表中如何命名这些列

我正在使用 yacc 为虚构的语言语法制作符号表。

第 1 列将具有“变量”或“函数”。

第 2 列将具有“int”或“void”。

我正在考虑将一列命名为“类型”,但后来我不知道该怎么称呼另一列。

0 投票
4 回答
1561 浏览

java - 带有空分隔符的 Java 扫描仪

我想使用手写的降序解析器解析一些文本。我使用Scanner了以下分隔符:"\\s*". 不幸的是,这个模式匹配一​​个空字符串这一事实似乎使every hasNextFooand nextFoomatch 不再匹配。

该文档没有说明可能为空的分隔符。

0 投票
3 回答
1046 浏览

algorithm - 如何识别带有非单词标记的文本中的单词?

我目前正在解析一堆邮件,并希望从邮件中获取单词和其他有趣的标记(即使有拼写错误或字符和字母的组合,如“zebra21”或“customer242”)。但是我怎么知道“0013lCnUieIquYjSuIA”和“anr5Brru2lLngOiEAVk1BTjN”不是单词并且不相关?如何提取单词并丢弃编码错误或部分 pgp 签名的令牌或我们在邮件中收到的任何其他内容,并且知道我们永远不会对这些感兴趣?

0 投票
2 回答
1954 浏览

objective-c - scanUpToCharactersFromSet 循环后停止

我正在尝试将 CSV 文件的内容放入数组中。当我在每行有一条记录之前完成此操作时,并将换行符与 一起使用,作为字符集scanUpToCharactersFromSet:intoString:传递:newlineCharacterSet

现在,我正在处理一个文件,其中许多条目本身都包含换行符。我尝试在每条记录(一个*字符)的末尾添加一个唯一字符,但我的循环只运行一次。有什么东西让我不知道while循环中断吗?这是我现在使用的代码:

**编辑:**感谢彼得在下面的回答,我发现我的扫描仪卡在 * 字符后面。我在循环中添加了这一行:

现在它正在正常工作。

0 投票
3 回答
699 浏览

compiler-construction - 词法分析器阶段可以在编译期间检查语法规则吗?

抱歉这个愚蠢的问题,但我和我的朋友就词汇分析发生了争执,我们决定询问社区。

问题是:语句“int some_variable = ;”是否 在词法分析阶段或 C 语法的语法分析阶段将被解释为无效。谢谢

0 投票
3 回答
312 浏览

python - 如何在正则表达式中评估匹配的数字?- 使用 Ply 对 FORTRAN 'H' 编辑描述符进行词法分析

我正在使用Ply来解释 FORTRAN 格式字符串。我在编写正则表达式以匹配格式为“H”的编辑描述符时遇到问题

x H ccccc ...

其中x指定在“H”之后要读入的字符数

Ply 将标记与单个正则表达式匹配,但我无法使用正则表达式执行上述操作。我正在寻找类似的东西,

(\d+)[Hh].{\1}

where\1被解析为整数并作为正则表达式的一部分进行评估 - 但事实并非如此。

看来以后在同一个正则表达式中不可能使用匹配的数字,是这样吗?

有没有人有其他可能使用 Ply 的解决方案?