我需要在JavaScript源代码中添加一些轻量级的语法糖,并使用基于JavaScript的构建系统对其进行处理.有没有用JavaScript编写的开源JavaScript解析器?在V8或类似的高性能JavaScript实现上运行时,它们是否相当快?
感谢您提供的任何指示!
我尝试使用/不同的关键字和运算符时如何解释,发现以下语法完全合法:
// awaiting something that isn't a Promise is fine, it's just strange to do:
const foo = await /barbaz/
myFn()Run Code Online (Sandbox Code Playgroud)
错误:
未捕获的ReferenceError:未定义等待
看起来它尝试将解析await为变量名 ..?我期待
等待仅在异步功能中有效
或类似的东西
意外的令牌等待
令我恐惧的是,您甚至可以为其分配以下内容:
const await = 'Wait, this actually works?';
console.log(await);Run Code Online (Sandbox Code Playgroud)
如若不是如此明显的错误原因语法错误,因为它确实有let,finally,break,等?为什么允许这样做?第一个代码片段到底发生了什么?
javascript specifications language-design async-await es2017
我正在编写一个简单的javascript tokenizer来检测基本类型:Word,Number,String,RegExp,Operator,Comment和Newline.一切都很顺利,但我无法理解如何检测当前字符是RegExp分隔符还是除法运算符.我没有使用正则表达式,因为它们太慢了.有人知道检测它的机制吗?谢谢.
我有一个很大的有效JavaScript文件(utf-8),我需要从中自动提取所有文本字符串.
为简单起见,该文件中不包含任何注释块,只包含有效的ES6 JavaScript代码.
一旦我发现的发生'或"或者',我应该扫描文本块的结尾,是我卡住了,因为所有可能的变化,比如"'",'"'"\'","\"", '",`\``等
是否有已知和/或可重用的算法来检测有效的ES6 JavaScript文本块的结尾?
UPDATE-1:我的JavaScript文件不仅很大,我还必须以块的形式处理它,因此Regex绝对不可用.我不想让我的问题复杂化,提到联合代码块,我会自己解决这个问题,如果我有一个算法可以处理内存中的单个代码.
更新-2:我最初开始工作,感谢这里给出的许多建议,但是由于正则表达式,我再次陷入困境.
正则表达式的示例打破了迄今为止建议的任何文本检测技术:
/'/
/"/
/\`/
Run Code Online (Sandbox Code Playgroud)
仔细研究了这个问题,通过阅读:JavaScript如何检测正则表达式?我担心在JavaScript中检测正则表达式是一个全新的球类游戏,值得一个单独的问题,否则它会变得太复杂.但是,如果有人能指出我正确的方向,我非常感谢...
更新3:经过大量研究后,我遗憾地发现我无法想出一个适用于我的算法的算法,因为正则表达式的存在使得任务比最初想象的要复杂得多.根据以下内容:解析Javascript时,什么决定了斜杠的含义?确定JavaScript中正则表达式的开头和结尾是最复杂和最复杂的任务之一.如果没有它,我们就无法弄清楚符号',''和` 何时打开文本块或者它们是否在正则表达式中.