У меня есть назначение использовать JavaCC для создания анализатора сверху вниз с помощью семантического анализа для языка, предоставленного лектором. У меня есть правила производства, и ошибок нет. Я полностью зациклен на том, как использовать JJTree для моего кода, и мои часы очистки Интернета для учебных пособий не доставили меня никуда. Просто интересно, может ли кто-нибудь потратить некоторое время, чтобы объяснить, как реализовать JJTree в коде? Или, если есть скрытый пошаговый учебник, где-то там была бы большая помощь!
Вот некоторые из моих правил производства, если они помогают. Спасибо заранее!
void program() : {}
{
(decl())* (function())* main_prog()
}
void decl() #void : {}
{
(
var_decl() | const_decl()
)
}
void var_decl() #void : {}
{
<VAR> ident_list() <COLON> type()
(<COMMA> ident_list() <COLON> type())* <SEMIC>
}
void const_decl() #void : {}
{
<CONSTANT> identifier() <COLON> type() <EQUAL> expression()
( <COMMA> identifier() <COLON> type() <EQUAL > expression())* <SEMIC>
}
void function() #void : {}
{
type() identifier() <LBR> param_list() <RBR>
<CBL>
(decl())*
(statement() <SEMIC> )*
returnRule() (expression() | {} )<SEMIC>
<CBR>
}