我正在使用 PegKit 来构建一个简单的领域特定的解释语言。
除了插值字符串之外,我基本上可以正常工作。
我们的想法是实现这样的某种规则:
atom = Number | stringLiteral | referenceType;
stringLiteral = "'"! (~"'" | "{"! expression "}"!)* "'"!;
referenceType = Word ('.' Word)*;
其中“表达式”产生式已经定义。
我在这里插入了一些逻辑,从我需要的令牌中构建了一个字符串。如果我们遇到一个表达式,我会评估它并将其添加到正在构建的字符串中。
atom 和 reference 类型的产品解析完美。
但是,如果我尝试解析“hello”之类的内容,则在运行 atom 规则时,生成的令牌始终是内置 Word 类型。
我尝试用美元符号和其他字符组合替换单引号来表示字符串的开头和结尾,但它从不匹配。
有任何想法吗?
干杯