📄 b.y
字号:
%token_type {int}
%left PLUS MINUS.
%left DIVIDE TIMES.
%include {
#include <stdio.h>
#include <iostream>
#include "b.h"
}
%syntax_error {
std::cout << "Syntax error!" << std::endl;
}
program ::= expr(A). { std::cout << "Result=" << A << std::endl; }
expr(A) ::= expr(B) MINUS expr(C). { A = B - C; }
expr(A) ::= expr(B) PLUS expr(C). { A = B + C; }
expr(A) ::= expr(B) TIMES expr(C). { A = B * C; }
expr(A) ::= expr(B) DIVIDE expr(C). {
if(C != 0){
A = B / C;
}else{
std::cout << "divide by zero" << std::endl;
}
} /* end of DIVIDE */
expr(A) ::= INTEGER(B). { A = B; }
%code {
int main()
{
yyTraceFILE = stdout;//fopen("Trace.txt","wb");
void* pParser = ParseAlloc (malloc);
Parse (pParser, INTEGER, 1);
Parse (pParser, PLUS, 0);
Parse (pParser, INTEGER, 2);
Parse (pParser, TIMES, 0);
Parse (pParser, INTEGER, 3);
Parse (pParser, 0, 0);
ParseFree(pParser, free );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -