目前,我正在学习如何在Java中解析Scheme。这是基本列表(我不知道它的正式名称是什么)编辑:语法!
exp -> ( rest
| #f
| #t
| ' exp
| integer_constant
| string_constant
| identifier
rest -> )
| exp+ [ . exp ] )
我的问题是:这个列表叫什么,就像它的正式名称一样? "解析列表"?编辑:根据评论,它被称为语法。
如何阅读?我的猜测是表达式介于左括号和右括号之间,例如:( exp )
。
此外,我猜行exp -> ( rest
和rest ->)
,#f
,#t
,' exp
,integer_constant
,{之间的任何对象{1}},string_constant
代替上一个示例示例中的表达式。例如:identifier
列表中的最后一项是( #t )
,我想这是第一个右括号右边的另一个表达式,例如上一个例子:| exp+ [ . exp] )
?
最后,这个位((#t) exp)
,支架只是说它是可选的?
如果我错了,请纠正我。
答案 0 :(得分:1)
这称为语法。写下语法有很多不同的语法,但它们彼此非常相似。
此处->
可以被理解为“是”,|
被视为“或”,+
被视为一个或多个,[]
,如您所怀疑的那样,“可选”。这里使用的其他符号仅代表它们自己。所以这个语法可以这样读:
表达式为:
123
)"foo"
)foo
)“休息”是:
所以foo
是一个表达式(因为标识符是表达式),()
是一个表达式(因为)
是“rest”而( rest
是表达式,{ {1}}是一个表达式(因为(foo)
是表达式,foo
是“休息”而exp )
是表达式),依此类推。