问题标签 [lexical]
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.
c++ - 简单解析器的简单方法
我正在尝试创建一个简单的解析器和一个遵循以下结构的小文本文件:
变量名 = 值;
VARIABLE_2 = SECOND_VALUE;
但是,找到的有效方法使用了许多库,例如 Boost。我想知道您是否可以制作一个简单的,最好只使用STD的库。
谢谢,布鲁诺阿拉诺。
javascript - 词法范围的变量在 getJSON 调用中被覆盖后保留值
在本文末尾的代码中,变量pPrice
是通过定义
的$(addProduct).attr(attrProductPrice);
,然后在 JSON 调用中设置的,
$.getJSON(url, function(data) { console.log(data); pPrice = data.price; });
但是在同步.getJSON
调用之后,该值已返回其原始值。
如何通过.getJSON
调用覆盖词法范围变量的定义?源代码缩写为相关部分:
dynamic - Common Lisp 作用域(动态与词法)
编辑:我在第一个答案后更改了示例代码,因为我想出了一个简单的版本,它提出了同样的问题。
我目前正在学习 Common Lisp 的作用域属性。在我认为我有一个扎实的理解之后,我决定编写一些可以预测结果的示例,但显然我错了。我有三个问题,每个问题都与以下示例有关:
示例 1:
输出:
问:这是有道理的。x 是静态作用域的,如果不显式传递,fun2 无法找到 x 的值。
示例 2:
输出:
问题:我不明白为什么 x 突然以 fun1 给它的值对 fun2 可见,而不是值为 100...
示例 3:
输出:
问题:我是否应该忽略这些结果,因为在未声明的变量上调用 setf 显然是未定义的?这恰好是我在第二个示例中所期望的......
任何见解将不胜感激......
javascript - Javascript 或 Python:每句后换行
我很好奇是否有一个用于 python 或 javascript 的库来标记一串句子的句子并在每个句子中添加新行?
IE:
到
java - 在 Java 中创建一个简单的词法分析器
我正在创建一个词法分析器,它必须为基本的“创建”语言读取文本输入和输出标记,并且在调用时应该输出一个标记。我希望它从我预先确定的列表中区分标识符、常量等。
我需要使用输入流读取文本文件。while 循环将单独遍历字符,但我需要它来识别扫描的字符是标识符还是 '+' '-' '*' '/' 等......最好的方法是什么?
我对编程相当陌生,所以任何关于如何构建它的建议都将不胜感激。非常感谢任何答案
lexical - 词汇错误:关键字拼写错误
龙书中提到“词法错误包括标识符、关键字或运算符的拼写错误”
我有点困惑,词法分析器如何找到拼写错误的关键字,它不会将拼写错误的关键字视为标识符吗?
parsing - 在 Scala 中添加定位到 Lexical/StdLexical
我正在创建一个与 StdLexical 相似的 Lexer,并在行为方面进行了一些更改(但就我的问题而言,演示如何将其添加到 StdLexical 就可以了)。我正在尝试添加对记录令牌位置的支持,但遇到了问题。如果我只是尝试添加positioned
,我会得到并非完全意外的错误,这基本上表明我无法positioned
使用不输出位置的解析器运行。
所以:我如何限制我的词法分析器的输入,以便它可以有位置解析器,或者(如果这是一个错误的问题):将位置信息添加到 StdLexical 的最佳方法是什么?
javascript - 关于数字 Literals lexical
alert(010),结果是 8。为什么?我阅读了 ecmascript 7.8.3 Numeric Literals。根据 Numeric Literals Lexical,010 是无效的数字文字。
c++ - c++ 函数重载不明确
在 C++ 中
编译时,它会出错。
在visual-studio 2008中,错误是C2668:'function':对重载函数的模糊调用
我知道为什么会出现这个问题,并且我知道使用时间类型转换的解决方案。但我认为这不是一个好的解决方案,因为使用这种方式会扼杀函数重载的词汇性。
在我的项目中,我制作了一个词法对象,将自动类型更改为 int、float、std::basic_string 和函数指针。重载所有类型转换运算符和创建者。但是当我输入“NULL”时,会出现错误 C2668。
事实上它几乎没有问题。唯一严重的问题是使用 FALSE 时。我的项目是核心库,所以我不能指导每个终端客户程序员。
谁知道以更聪明的方式解决这个问题的诀窍或技巧?
java - 实现一个词法分析器
我的任务是为语言 c-- 实现词法分析器。我们必须将 c-- 代码翻译成一系列标记,这些标记将在内部表示为整数,因为它更容易操作。该语言的一些词汇约定是有关键字,如 double、else、if、int、return、void 和 while。还有特殊符号,如 + - * / < <= > >= == != = ; , . ( ) [ ] { } /* */ //. 标识符可以以任何字母或下划线开头,后跟字母、数字和下划线的任意组合。空格分隔标记并被忽略。数字可以是整数或小数,并且允许使用注释行和块。
这是我们的测试代码:
这应该是我们的输出
3 27 21 3 27 22 25 2 21 27 13 28 22 4 27 9 27 21 27 8 28 22 18 1 4 28 18 26 5 27 21 5 22 25 3 27 19 27 19 27 18 0 277 18 27 1817 27 17 27 21 22 18 2 21 27 13 28 22 27 21 27 21 27 22 22 18 1 2 21 27 12 28 22 27 21 27 9 27 22 18 26
INT id leftparen INT id rightparen leftbrace IF leftparen id 大于 num rightparen RETURN id 乘法 id leftparen id 减 num rightparen 分号 ELSE RETURN num 分号 rightparen VOID id leftparen VOID rightparen leftbrace INT id comma id comma id 分号 DOUBLE id 分号 id assignop id leftparen rightparen 分号id assignop id leftparen rightparen 分号 IF leftparen id 更大的 num rightparen id leftparen id leftparen id rightparen rightparen 分号 ELSE IF leftparen id notequal num rightparen id leftparen id 乘法 id rightparen 分号 rightbrace
好的,我根据用户 John 的建议编写了一些代码。我仍然对这将如何工作感到困惑。当我迭代第二个循环以查找空白或符号时,我如何知道符号的 ws 之前出现了什么类型的令牌。我试图将我跳过的字符放入字符串中并使用 case 语句来确定它,但我认为它会将整个文件写入字符串,因此我的标记永远不会匹配。另外,方法如何找到评论并安全地忽略它们?