Я работаю над парсером COBOL, используя JavaCC. Файл COBOL обычно будет иметь столбцы с 1 по 6 в виде строк/столбцов. Если номера строк/столбцов отсутствуют, у них будут пробелы.Обработка комментариев и номеров строк/столбцов в грамматике COBOL с использованием Javacc
Мне нужно знать, как обрабатывать комментарии и область последовательности в файле COBOL и анализировать только Main Area.
Я пробовал много выражений, но никто не работает. Я создал специальный токен, который будет проверять новую строку, а затем шесть вхождений пробелов или любого символа, кроме пробела и возврата каретки, и после этого седьмой символ будет "*"
для комментариев и " "
для обычных строк.
Я использую файл Cobol.jj доступный здесь http://java.net/downloads/javacc/contrib/grammars/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 :
{
< ((~[])(~[])(~[])(~[])(~[])(~[])) (" ") >
}
Я не уверен, что точки с запятой следует рассматривать как пробелы. Я просто копировал из парсера Тири Блайнда. Одно небольшое изменение, которое я сделал, заключалось в том, чтобы лечить \ r сам по себе как законный конец строки (если сразу не следовать \ n "). –