importpublicjava.io.*;intstaticclasscharWordAnalyse[]strbuf={newchar[150];//定义一个数组,用以存放从文件读取来的字符串String[]keywordIndexkeyWord;=//\"function\"{\"and\"取关键字的类号,\"begin\",\"const\",\"div\",\"do\",publicWordAnalysestaticvoid\"read\",\"if\",\"integer\",\"not\",\"or\"\"else\",\"procedure\",\"end\",,\"program\",main(String[],\"real\",\"then\"args),throws\"type\",\"var\",\"while\",\"write\"};wa.readFile(waIOException{System.System.out.println(\"d:/pascal.txt\"=newWordAnalyse();\"******用);JAVA实现的Pascal语言的词法分析器wa.run();out.println(\"******TheResult:******\"+\"\\n\");*********\");}System.out.println(\"\\n\"+\"******Complete!******\");//private从文件中把字符串读取到一个字符数组中intvoidreadFile(Stringurl)throwsIOException{FileReaderch,i=0;whilestrbuf((ch=fr.read())!=-1){fr=newFileReader(url);[i++]=(char)ch;}}privateif('a'boolean<=ch&ch<=isLetter('z'||'A'charch){}elsereturn<=ch&ch<='Z')returntruefalse;;privateif('0'boolean<=ch&&ch<=isDigit('9'charch){}elsereturnreturntruefalse;);privateStringBuffervoidrun(){//分析整个strbuffor(//inti=0;bufi20)System.outif}.println(buf+\"\\\"+21);(isDigit(strbuf[i])){1buf.delete(0,buf.length());while(isDigit(strbuf[i])){buf.append(strbuf[i]);i++;}i--;System.out.println(buf+\"\\\"+22);}}}switchcasecase','((char)strbuf[i]){\"\\\"23);case';':System.:System.out.println(strbuf[i]+\"\\\"+24);breakcase'.'\"\\\"+26);break;;case'(':System.out.println(strbuf[i]+:System.outout.println(strbuf[i]+\"\\\"+27);break;case')'\"\\\"+28);breakcase'[':System.:System.out.println(strbuf[i]+out.println(.println(strbuf[i]+\"\\\"+29);break;;case']''+':System.:System.outout.println(strbuf.println(strbuf[i]+strbuf[i][i]+\"\\\"+30);break;case\"\\\"+case'-'\"\\\"++34);breakcase'=':System.:System.outout.println(.println(strbufstrbuf[i]+[i]++\"\\\"+35);break;;38);breakbreak;;buf.delete(0,':':{buf.append(buf.length());i++;strbuf[i]);if(strbufbuf.append([i]=='='strbuf){[i]);}elseSystem.+44);System.{out.println(buf+\"\\\"out.println(buf++25);i++;};break}\"\\\";casebuf.delete(0,'>':{buf.append(buf.length());i++;strbuf[i]);if(strbufbuf.append([i]=='='){}elseSystem.out.println(bufstrbuf[i]);+\"\\\"+System.{43);out.println(buf+\"\\\"};break}+40);i--;;casebuf.delete(0,'<':{buf.append(buf.length());i++;strbuf[i]);if(strbufbuf.append([i]=='='){}elseSystem.out.println(bufstrbuf[i]);+\"\\\"+42);i++;buf.append(if(strbuf}elseSystem.out.println(bufstrbuf[i]==[i]);'>'){+\"\\\"+41);i++;System.{out.println(buf+\"\\\"+39);i++;};}}//switchbreak;结束2}