Я использую парсер .bnf для обнаружения определенных выражений и использую JFlex для обнаружения различных разделов этих выражений. Моя проблема в том, что некоторые из этих выражений могут содержать вложенные выражения, и я не знаю, как с этим справиться.
Я попытался включить парсер .bnf в мой JFlex с помощью %include
, а затем сослаться на выражение в относительном макросе с помощью PARAMETERS = ("'"[:jletter:] [:jletterdigit:]*"'") | expression
. Это не удается, так как JFlex сообщает, что файл .bnf искажен.
Фрагмент JFlex:
%{
public Lexer() {
this((java.io.Reader)null);
}
%}
%public
%class Lexer
%implements FlexLexer
%function advance
%type IElementType
%include filename.bnf
%unicode
PARAMETERS= ("'"[:jletter:] [:jletterdigit:]*"'") | <a new expression element>
%%
<YYINITIAL> {PARAMETERS} {return BAD_CHARACTER;} some random return
Фрагмент парсера .bnf:
{
//list of classes used.
}
expression ::= (<expression definition>)
Любой вклад будет принята с благодарностью. Спасибо.