如何禁止令牌之间的空白



在bash中,actigment中必须没有 =周围的空间。

x=10

bash的 yylex()只是将整个内容返回x=10作为ASSIGNMENT_WORD令牌。然后进行处理。

http://git.savannah.gnu.org/cgit/bash.git/tree/parse.y#n723

但是,它更好地处理解析器而不是lexer(作为我在解析器中处理的分配的最大示例)?

)?

如何设计语法以禁用=周围的空间?谢谢。

但是,它更好地处理解析器而不是lexer(作为我在解析器中处理的分配的最大示例)?

)?

如果Whitespace通常用于分开词汇令牌,那么避免对可变分配的例外可能会更容易。请注意,在Shell命令语言的特定情况下,规格以这种方式明确描述了通过词汇令牌化来描述解析,因此在这种情况下,对于编写代码特别有吸引力,以使其直接与规格相对应。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</p>

如果您这样做,那么也让Lexer识别为自己的令牌类型非常有帮助,因为这些信息却廉价地从词汇分析中脱颖而出,而对于解析器阶段来说,这会更加混乱,更昂贵(重新)检查每个令牌值以识别哪些是分配。

如何设计语法以禁用周围的空间=?

如果要在语法级别上应用"空间规则",而不是令牌化级别,则令牌仪需要发出明确的白色空格令牌,以便Parser可以看到Whitespace所处的位置。然后,您可以编写语法规则,以适应允许范围的空格,而不是不可能的地方。但是,从这样做的人那里拿走(对于另一种语言):这是丑陋和讨厌的,您应该尽一切努力避免它。

最新更新