0
我正在使用JavaCC處理COBOL分析器。 COBOL文件通常將第1到第6列作爲行/列號。如果線/列號不存在,則會有空格。使用Javacc處理COBOL語法中的註釋和行/列號
我需要知道如何處理COBOL文件中的註釋和序列區域並僅解析主區域。
我已經嘗試了很多表達式,但都沒有工作。我創建了一個特殊標記,用於檢查新行,然後檢查六次空格或除空格和回車之外的任何字符,之後第七個字符將爲"*"
,正常行將爲" "
。
我使用的可以在這裏找到http://java.net/downloads/javacc/contrib/grammars/cobol.jj
任何人都可以給我建議,我應該用什麼語法Cobol.jj文件?
我的語法文件的樣本:
PARSER_END(CblParser)
////////////////////////////////////////////////////////////////////////////////
// Lexical structure
////////////////////////////////////////////////////////////////////////////////
SPECIAL_TOKEN :
{
< EOL: "\n" > : LINE_START
| < SPACECHAR: (" " | "\t" | "\f" | ";" | "\r")+ >
}
SPECIAL_TOKEN :
{
< COMMENT: (~["\n","\r"," "] ~["\n","\r"," "] ~["\n","\r"," "] ~["\n","\r"," "] ~["\n","\r"," "] ~["\n","\r"," "]) ("*" | "|") (~["\n","\r"])* >
| < PREPROC_COMMENT: "*|" (~["\n","\r"])* >
| < SPACE_SEPARATOR : (<SPACECHAR> | <EOL>)+ >
| < COMMA_SEPARATOR : "," <SPACE_SEPARATOR> >
}
<LINE_START> SKIP :
{
< ((~[])(~[])(~[])(~[])(~[])(~[])) (" ") >
}
我不相信分號應該被視爲空格。我只是從Thiery Blind的解析器中複製而來。我做的一個小改變就是把\ r本身作爲一個合法的行尾(除非緊跟着一個\ n「)。 – 2013-03-14 12:10:00