資源簡介
語法分析器java實現(xiàn),包含詞法分析器。程序代碼作為詞法分析器的輸入,詞法分析器的輸出作為語法分析器的輸入,由語法分析器輸出語法分析的結果。

代碼片段和文件信息
import?java.io.*;
import?java.util.ArrayList;
import?java.util.Scanner;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
/**
?*?詞法分析器
?*/
public?class?LexicalAnalyzer?{
????//?單詞種別碼?1-17為關鍵字種別碼
????public?static?final?int?CHAR?=?1;
????public?static?final?int?SHORT?=?2;
????public?static?final?int?INT?=?3;
????public?static?final?int?LONG?=?4;
????public?static?final?int?FLOAT?=?5;
????public?static?final?int?DOUBLE?=?6;
????public?static?final?int?FINAL?=?7;
????public?static?final?int?STATIC?=?8;
????public?static?final?int?IF?=?9;
????public?static?final?int?ELSE?=?10;
????public?static?final?int?WHILE?=?11;
????public?static?final?int?DO?=?12;
????public?static?final?int?FOR?=?13;
????public?static?final?int?BREAK?=?14;
????public?static?final?int?CONTINUE?=?15;
????public?static?final?int?VOID?=?16;
????public?static?final?int?RETURN?=?17;
????//?20為標識符種別碼
????public?static?final?int?ID?=?20;
????//?30為常量種別碼
????public?static?final?int?NUM?=?30;
????//?31-40為運算符種別碼
????public?static?final?int?AS?=?31;?//?=
????public?static?final?int?EQ?=?32;?//?==
????public?static?final?int?GT?=?33;?//?>
????public?static?final?int?LT?=?34;?//?<
????public?static?final?int?GE?=?35;?//?>=
????public?static?final?int?LE?=?36;?//?<=
????public?static?final?int?ADD?=?37;?//?+
????public?static?final?int?SUB?=?38;?//?-
????public?static?final?int?MUL?=?39;?//?*
????public?static?final?int?DIV?=?40;?//?/
????//?41-49為界限符種別碼
????public?static?final?int?LP?=?41;?//?(
????public?static?final?int?RP?=?42;?//?)
????public?static?final?int?LBT?=?43;?//?[
????public?static?final?int?RBT?=?44;?//?]
????public?static?final?int?LBS?=?45;?//?{
????public?static?final?int?RBS?=?46;?//?}
????public?static?final?int?COM?=?47;?//?
????public?static?final?int?COL?=?48;?//?:
????public?static?final?int?SEM?=?49;?//?;
????//?-1為無法識別的字符標志碼
????public?static?final?int?ERROR?=?-1;
????public?static?int?errorNum?=?0;?//?記錄詞法分析錯誤的個數(shù)
????//?判斷是否為字母
????public?static?boolean?isLetter(char?c)?{
????????if?(((c?>=?‘a(chǎn)‘)?&&?(c?<=?‘z‘))?||?((c?>=?‘A‘)?&&?(c?<=?‘Z‘)))?{
????????????return?true;
????????}
????????return?false;
????}
????//?判斷是否為關鍵字,若是則返回關鍵字種別碼
????public?static?int?isKeyID(String?str)?{
????????String?keystr[]?=?{“char“?“short“?“int“?“l(fā)ong“?“float“?“double“?“final“?“static“?“if“?“else“?“while“
????????????????“do“?“for“?“break“?“continue“?“void“?“return“};
????????for?(int?i?=?0;?i?????????????if?(str.equals(keystr[i]))?{
????????????????return?i?+?1;
????????????}
????????}
????????return?0;
????}
????//?判斷是否為常量(整數(shù)、小數(shù)、浮點數(shù))
????public?static?boolean?isNum(String?str)?{
????????int?dot?=?0;?//?.的個數(shù)
????????int?notNum?=?0;?//?不是數(shù)字的個數(shù)
????????for?(int?i?=?0;?i?????????????if?(!(str.charAt(i)?>=?‘0‘?&&?str.charAt(i)?<=?‘9‘))?{
????????????????notNum++;
????????????????if?(notNum?>?dot?+?1)?{
???????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-06?18:08??SyntaxAnalyzer\
?????目錄???????????0??2019-01-18?10:22??SyntaxAnalyzer\.idea\
?????文件?????????278??2018-12-05?15:49??SyntaxAnalyzer\.idea\misc.xm
?????文件?????????275??2018-12-05?15:49??SyntaxAnalyzer\.idea\modules.xm
?????文件???????17040??2019-01-18?10:22??SyntaxAnalyzer\.idea\workspace.xm
?????目錄???????????0??2018-12-05?20:10??SyntaxAnalyzer\out\
?????目錄???????????0??2018-12-05?20:10??SyntaxAnalyzer\out\production\
?????目錄???????????0??2018-12-06?19:31??SyntaxAnalyzer\out\production\SyntaxAnalyzer\
?????目錄???????????0??2018-12-06?20:02??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\
?????文件??????????70??2018-12-06?19:42??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input1.txt
?????文件??????????56??2018-12-06?19:46??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input2.txt
?????文件??????????53??2018-12-06?19:49??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input3.txt
?????文件?????????112??2018-12-06?19:52??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input4.txt
?????文件??????????77??2018-12-06?19:56??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input5.txt
?????文件?????????375??2018-12-06?20:02??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input6.txt
?????文件????????3275??2018-12-06?19:44??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output1.txt
?????文件????????3838??2018-12-06?19:47??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output2.txt
?????文件????????1818??2018-12-06?19:51??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output3.txt
?????文件????????6756??2018-12-06?17:03??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output4.txt
?????文件????????5089??2018-12-06?20:01??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output5.txt
?????文件???????29494??2018-12-06?19:39??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output6.txt
?????文件??????????38??2018-12-06?19:39??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test1.txt
?????文件??????????20??2018-12-06?19:44??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test2.txt
?????文件??????????17??2018-12-06?19:47??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test3.txt
?????文件??????????53??2018-12-06?19:51??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test4.txt
?????文件??????????36??2018-12-06?17:03??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test5.txt
?????文件?????????179??2018-12-06?20:01??SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test6.txt
?????文件?????????517??2018-12-05?22:00??SyntaxAnalyzer\out\production\SyntaxAnalyzer\LexicalAnalyzer$Pair.class
?????文件????????9945??2018-12-05?22:00??SyntaxAnalyzer\out\production\SyntaxAnalyzer\LexicalAnalyzer.class
?????文件?????????595??2018-12-06?19:31??SyntaxAnalyzer\out\production\SyntaxAnalyzer\SyntaxAnalyzer$Production.class
?????文件???????14143??2018-12-06?19:31??SyntaxAnalyzer\out\production\SyntaxAnalyzer\SyntaxAnalyzer.class
............此處省略23個文件信息
- 上一篇:UUID生成工具
- 下一篇:含界面的java的詞法分析器
評論
共有 條評論