Я хочу реализовать интерпретатор для арифметического языка с несколькими нотами (префикс, инфикс и постфикс). Его грамматическое описание в EBNF приведено ниже. Как я могу закодировать это в Javacc?Как преобразовать грамматику EBNF в Javacc?
< Process> --> PROCESS id ; <First Section> <SecondSection>
<First Section> --> VARIABLES [<Variable List>];
<First List> --> <First Def> | <First Def>, <First List>
<First Def> --> <First Name> [ EQUAL integer_literal ]
<First Name> --> id
<Second Section> --> COMMANDS {<Statement>;}
<Statement> --> <Input Statement> | <Output Statement> | <Assignment Statement>
<Input Statement> --> READ 'message ' <First Name>
<Output Statement> --> WRITE 'message ' [ <Expression>]
<Assignment Statement> --> <First Name> <-- <Expression>
<Expression> --> <PrefixExp> | <InfixExp> | <PostfixExp>
<InfixExp> --> <Term> | <InfixExp> (PLUS | MINUS) <Term>
<Term> --> <Factor> | <Term> (MULTIPLICATION | DIVISION) <Factor>
<Factor> --> integer_literal | <First Name> | (<InfixExp>)
<PrefixExp> --> <Operator> <PrefixExp> <PrefixExp>
<PrefixExp> --> integer_literal | <First Name>
<PostfixExp> --> <PostfixExp> <PostfixExp> <Operator>
<PostfixExp> --> integer_literal | <First Name>
<Operator> --> (ADD | SUBSTRACT | MULTIPLY | DIVIDE)
Вы можете прочитать документацию и примеры JavaCC и начать кодирование;) –
Что именно вы подразумеваете под «Как я могу кодировать это с помощью Javacc?»? –
Я хочу кодировать эту грамматику с помощью языка javacc. Я читал слишком много документов о Javacc, но я не совсем понимаю. Я новичок в Javacc. Я хочу закодировать грамматику с Javacc, а затем, если бы я закодировал этот основной класс и тестовый код wirte. Я имею в виду, что я пишу такой арифметический язык. Я начал кодировать, я писал токены, но я не применял грамматику к javacc. Предлагаете ли вы хороший и простой сайт о примере кода Javacc по этому вопросу. –