定义语言解析器的语法时,如何处理可能出现在文本中任意位置的注释(例如 /*....*/)?在标记内部构建语法似乎在结构化情况下非常有效,但是注释会使一切变得复杂。您是否需要将文本分成两个步骤进行解析?首先删除这些项目,然后拆分代码的实际结构?谢谢。
hash = "#" ;
,如何修改以包括“隐式空格前缀”? 隐式通常意味着从某些东西推断出来,而显式则意味着规则被更改以指定前缀,例如hash = [WS] "#" ;
。一个简单的语法示例会有所帮助。 - Davehash =“#”
,此转换将产生hash =[whitespace]*“#”
,并且对于您可能从PEG表达式中隐式提取的所有令牌节点都是如此(例如,如果您有一个表达式atom = {“(”[expr]“)”} / ...
,则将具有两个隐式令牌节点“(”
和“)”
,其中两者都添加了空格。您可以在此处查看我的实现细节:https://github.com/combinatorylogic/mbase/blob/master/src/l/lib/parsing/compiler.al - SK-logic