有人可以告诉我这种模式的CFG是什么:/var/{id}
在这里,var可以重复多次,但模式总是以{id}
因此,这些都是有效的案例:
/var/var/{id}
/var/var/var/var/{id}
/var/{id}
到目前为止,我已经掌握了这个语法:
start::= token
token::= token expr token
token::= "/"
expr::= "var" | "{id}"
但我认为没错。帮助将不胜感激。谢谢!
答案 0 :(得分:0)
你快到了!您现在拥有的语法将生成/var/var/var/{id}/
以及/{id}/var/var/{id}/var/
等字符串。因此,您需要执行的操作是从{id}
规则中删除expr
。但是,您仍然需要在最后添加{id}
以符合您的语言定义,这可以在start
规则中完成。结果语法是:
start::= token "{id}"
token::= token expr token
token::= "/"
expr::= "var"