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

📄 readme.txt

📁 用YACC写的语法分析器
💻 TXT
字号:
实验项目3:利用yacc或手工编写递归下降分析器,对一个简单的pascal或c语言程序,能指出该程序有没有语法错误。如有,尽量指出错误的位置。

编译cs8:~/luck$ gcc y.tab.c error.c
运行cs8:~/luck$ ./a.out
输入的测试pascal program:
PROGRAM  ex01(INPUT,OUTPUT);
 (* The first pascal program *)
CONST
  pi=3.1415926;
VAR 
  r,s,l:REAL;
BEGIN
  READ(r);
  s:=pi*SQR(r);
  l:=2*pi*r;
  WRITE(r,s,l)
END.
输出分析结果:
--(end of buffer or a NULL)
PROGRAM  ex01(INPUT,OUTPUT);
 (* The first pascal program *)
--accepting rule at line 74 ("PROGRAM")
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("ex01")
--accepting rule at line 101 ("(")
--accepting rule at line 86 ("INPUT")
--accepting rule at line 92 (",")
--accepting rule at line 86 ("OUTPUT")
--accepting rule at line 108 (")")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 116 ("(*")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
CONST
  pi=3.1415926;
VAR
  r,s,l:REAL;
BEGIN
--accepting rule at line 49 ("CONST")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("pi")
--accepting rule at line 96 ("=")
--accepting rule at line 107 ("3.1415926")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 82 ("VAR")
--accepting rule at line 136 (" ")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("r")
--accepting rule at line 92 (",")
--accepting rule at line 86 ("s")
--accepting rule at line 92 (",")
--accepting rule at line 86 ("l")
--accepting rule at line 91 (":")
--accepting rule at line 86 ("REAL")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 71 ("BEGIN")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
 READ(r);
  s:=pi*SQR(r);
  l:=2*pi*r;
  WRITE(r,s,l)
END.
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("READ")
--accepting rule at line 101 ("(")
--accepting rule at line 86 ("r")
--accepting rule at line 108 (")")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("s")
--accepting rule at line 88 (":=")
--accepting rule at line 86 ("pi")
--accepting rule at line 111 ("*")
--accepting rule at line 86 ("SQR")
--accepting rule at line 101 ("(")
--accepting rule at line 86 ("r")
--accepting rule at line 108 (")")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("s")
--accepting rule at line 88 (":=")
--accepting rule at line 86 ("pi")
--accepting rule at line 111 ("*")
--accepting rule at line 86 ("SQR")
--accepting rule at line 101 ("(")
--accepting rule at line 86 ("r")
--accepting rule at line 108 (")")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("l")
--accepting rule at line 88 (":=")
--accepting rule at line 93 ("2")
--accepting rule at line 111 ("*")
--accepting rule at line 86 ("pi")
--accepting rule at line 111 ("*")
--accepting rule at line 86 ("r")
--accepting rule at line 109 (";")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)
--accepting rule at line 136 (" ")
--accepting rule at line 136 (" ")
--accepting rule at line 86 ("WRITE")
--accepting rule at line 101 ("(")
--accepting rule at line 86 ("r")
--accepting rule at line 92 (",")
--accepting rule at line 86 ("s")
--accepting rule at line 92 (",")
--accepting rule at line 86 ("l")
--accepting rule at line 108 (")")
--accepting rule at line 138 (" ")
--(end of buffer or a NULL)

⌨️ 快捷键说明

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