是否可以使用 bison/yacc 为使用逆波兰符号(和类似 Postscript 的语法)的脚本语言生成解析器?
解析器应该能够解析类似于下面的代码:
/fib
{
dup dup 1 eq exch 0 eq or not
{
dup 1 sub fib
exch 2 sub fib
add
} if
} def
最佳答案
鉴于上面的简短描述和维基百科上的注释:
http://en.wikipedia.org/wiki/Stack-oriented_programming_language#PostScript_stacks
上面的一个简单的 Bison 语法可以是:
%token ADD
%token DUP
%token DEF
%token EQ
%token EXCH
%token IF
%token NOT
%token OR
%token SUB
%token NUMBER
%token IDENTIFIER
%%
program : action_list_opt
action_list_opt : action_list
| /* No Action */
action_list : action
| action_list action
action : param_list_opt operator
param_list_opt : param_list
| /* No Parameters */
param_list : param
| param_list param
param : literal
| name
| action_block
operator : ADD
| DUP
| DEF
| EQ
| EXCH
| IF
| NOT
| OR
| SUB
literal : NUMBER
name : '/' IDENTIFIER
action_block : '{' program '}'
%%
关于c++ - 是否可以使用带有 bison/yacc 的逆波兰符号为一种语言生成解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553905/