原文地址
http://www.buildyourownlisp.com/chapter6_parsing
波兰式
1 + 2 + 3 --> + 1 2 3
6 + (2 * 9) --> + 6 ( * 2 9)
(10 * 2) / (4 + 2) --> / (* 2 10) (+ 4 2)
即:一个程序是由一个操作符后跟一个或多个表达式构成的,表达式是:一个数字或者是在一个圆括号中的一个或多个表达式。(递归啊啊啊)
Program: 输入的开始,一个操作符,一个或多个表达式,输入的结束
Expression: Number 或者 ‘(‘, 一个操作符, 一个或多个表达式, ‘)’
Operator: +. -. *, /
Number : 一个可选的 ‘-‘, 一个或多个0-9之间的字符
正则表达式
.
: 匹配任何字符
a
: 匹配字符’a’
[abcdef]
: 匹配任何在abcdef 中的字符
[a-f]
: 匹配a到f之间的任何字符
a?
: a是可选的字符
a*
: 匹配0到多个a
a+
: 匹配1到多个a
^
: 匹配一行的开始
$
: 匹配一行的结束