?? readme.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 + -