3

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

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

rule params
  # ...
end

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

足以匹配

lambda {
}

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

4

1 回答 1

2

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

但是,在将 treetop 应用于您的字符串之前,您可能会尝试运行一个“快速而肮脏”的基于正则表达式的算法,该算法会从它们是可选的地方丢弃空格。不过,这可能比在语法中指定空格要困难得多。

于 2011-05-25T04:34:45.643 回答