我对nearly.js非常陌生,我想知道与规则相比,标记器/词汇者会做些什么,根据该网站:
默认情况下,“近邻”将输入拆分为一个字符流。这被称为无扫描解析。令牌器将输入拆分成一个更大的单元流,称为令牌。在解析之前,这种情况会在单独的阶段发生。例如,令牌程序可能会将
512 + 10转换为["512", "+", "10"]:注意它如何删除空格,并将多位数字组合成一个数字。
难道这不是和:
Math -> Number _ "+" _ Number
Number -> [0-9]:+我看不出书呆子的目的是什么。我认为,在这种情况下,规则总是可以使用的,而且没有必要使用词汇。
发布于 2018-08-28 11:42:44
在摆弄了他们之后,我发现了令牌的使用,比如我们有以下内容:
Keyword -> "if"|"else"
Identifier -> [a-zA-Z_]+这是行不通的,如果我们尝试编译它,就会得到不明确的语法," if“将被匹配为关键字和标识符,但是,标记程序:
{
"keyword": /if|else/
"identifier": /[a-zA-Z_]+/
}尝试编译这不会导致语法不明确,因为标记器是智能的(至少在本例中显示的是Moo)。
https://stackoverflow.com/questions/52045590
复制相似问题