Treetop语法中的空白

时间:2011-05-25 04:04:06

标签: abstract-syntax-tree treetop

在指定是否允许空格时,我需要多么明确?例如,这些规则是:

rule lambda
  'lambda' ( '(' params ')' )? block
end

rule params
  # ...
end

rule block
  '{' # ... '}'
end

足以匹配

lambda {
}

基本上我是否需要指定可能出现的可选空格?

1 个答案:

答案 0 :(得分:2)

是的,你这样做。在这些规则中,您需要跳过空格,但是,例如,当您解析可能包含空格的字符串时,您希望保留它们;这就是你必须指定的原因。

但是,在将树梢应用于字符串之前,您可能会尝试运行“快速且脏”的基于正则表达式的算法,该算法会从可选的位置丢弃空格。但是,在语法中指定空格可能要困难得多。