0

我正在尝试为如下语言创建语法

someVariable = This is a string, I know it doesn't have double quotes
anotherString = This string has a continuation _
      this means I can write it on multiple line _
      like this
anotherVariable = "This string is surrounded by quotes"

正确解析前面代码的正确 Treetop 语法规则是什么?

我应该能够为三个变量提取以下值

  • 这是一个字符串,我知道它没有双引号
  • 这个字符串有一个延续,这意味着我可以像这样在多行上写它
  • 这个字符串被引号包围

谢谢

4

1 回答 1

1

如果您将序列“_\n”定义为单个空白字符,并确保在接受行尾之前对其进行测试,则您的 VB 样式的续行应该只是退出。在 VB 中,换行符“\n”本身不是空格,而是一个不同的语句终止字符。您可能还需要处理回车,具体取决于您的输入字符处理规则。我会这样写空格规则:

rule white
  ( [ \t] / "_\n" "\r"? )+
end

那么您的语句规则如下所示:

rule variable_assignment
  white* var:([[:alpha:]]+) white* "=" white* value:((white / !"\n" .)*) "\n"
end

和你的首要规则:

rule top
    variable_assignment*
end

您的语言似乎没有比这更明显的结构了。

于 2015-05-21T11:50:50.127 回答