⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example5.y

📁 学习lemon语法分析的windows程序
💻 Y
字号:
/* Copyright (GPL) 2004 mchirico@users.sourceforge.net or mchirico@comcast.net  Simple lemon parser  example.      $ ./lemon example2.y                            */%include {   #include <iostream>  #include "ex5def.h"#include "example5.h"#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include "lexglobal.h"#define BUFS 1024  void token_destructor(Token t)    {      std::cout << "In token_destructor t.value= " << t.value << std::endl;      std::cout << "In token_destructor t.n= " << t.n << std::endl;    }}  %token_type {Token}%default_type {Token}%token_destructor { token_destructor($$); }%type expr {Token}%type id {Token}   %left PLUS MINUS.   %left DIVIDE TIMES.     %parse_accept {  printf("parsing complete!\n\n\n");}   %syntax_error {    std::cout << "Syntax error!" << std::endl;  }      /*  This is to terminate with a new line */main ::= in.in ::= .in ::= in state NEWLINE.state ::= expr(A).   {                         std::cout << "Result.value=" << A.value << std::endl;                         std::cout << "Result.n=" << A.n << std::endl;                          }  expr(A) ::= expr(B) MINUS  expr(C).   { A.value = B.value - C.value;                                        A.n = B.n+1  + C.n+1;                                      }  expr(A) ::= expr(B) PLUS  expr(C).   { A.value = B.value + C.value;                                        A.n = B.n+1  + C.n+1;                                      }  expr(A) ::= expr(B) TIMES  expr(C).   { A.value = B.value * C.value;                                        A.n = B.n+1  + C.n+1;                                         }  expr(A) ::= expr(B) DIVIDE expr(C).  {          if(C.value != 0){           A.value = B.value / C.value;           A.n = B.n+1 + C.n+1;          }else{           std::cout << "divide by zero" << std::endl;           }}  /* end of DIVIDE */expr(A) ::= NUM(B). { A.value = B.value; A.n = B.n+1; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -