📄 cmm.jjt
字号:
/**
* JJTree file
*/
options {
JDK_VERSION = "1.5";
}
PARSER_BEGIN(Cmm)
package cmm;
public class Cmm {
public static void main(String args[]){
System.out.println("Reading from standard input...");
new Cmm(System.in);
try {
SimpleNode n = Cmm.Start();
n.dump("");
System.out.println("Thank you!");
} catch (Exception e) {
System.out.println("Oops.");
System.out.println(e.getMessage());
}
}
}
PARSER_END(Cmm)
SKIP :
{
" "
| "\t"
| "\n"
| "\r"
| <"//" (~["\n","\r"])* ("\n"|"\r"|"\r\n")>
| <"/*" (~["*"])* "*" (~["/"] (~["*"])* "*")* "/">
}
TOKEN:{
<INT:(["0"-"9"])+>
}
TOKEN:{
<REAL:(["0"-"9"])*"." (["0"-"9"])+>
}
TOKEN:{
<PLUSMINUS:"+"|"-">
}
TOKEN:{
<MULTIPLYDIVIDE:"*"|"/">
}
TOKEN:{
<KEYWORD_INT:"int">
|<KEYWORD_REAL:"real">
|<KEYWORD_IF:"if">
|<KEYWORD_ELSE:"else">
|<KEYWORD_WHILE:"while">
|<KEYWORD_READ:"read">
|<KEYWORD_WRITE:"write">
|<KEYWORD_BEGIN:"begin">
|<KEYWORD_END:"end">
}
TOKEN:{
<WORD:("<"|"<>"|"==")>
}
TOKEN:{
<ID:["a"-"z","A"-"Z"](((["a"-"z","A"-"Z","0"-"9","_"])*)((["a"-"z","A"-"Z","0"-"9"])+))*>
}
TOKEN :
{
< ARRAY: <ARRAYIDENTIFIER><LBRACKET><PLUSINTEGER><RBRACKET>>
| < #ARRAYIDENTIFIER: <ARRAYLETTER> (<ARRAYLETTER>|<ARRAYDIGIT>|<ARRAYUNDERLINE>)* (<ARRAYLETTER>|<ARRAYDIGIT>)* >
| < #ARRAYLETTER: ["a"-"z","A"-"Z"] >
| < #ARRAYDIGIT: ["0"-"9"] >
| < #ARRAYUNDERLINE: ["_"] >
| < #PLUSINTEGER: ["1"-"9"](["0"-"9"])* >
| < #LBRACKET: "[" >
| < #RBRACKET: "]" >
}
SimpleNode Start():{}
{
Program()
{ return jjtThis; }
}
void Program():{ }
{
(VarDeclare())* Sentence()
}
void VarDeclare():{}
{
(<KEYWORD_INT>|<KEYWORD_REAL>)(<ID>|<ARRAY>) (","(<ID>|<ARRAY>))* ";"
}
void Sentence():{ }
{
Complex()|Evaluate()|IfSentence()|WhileSentence()|WriteSentence()|ReadSentence()
}
void Complex():{}
{
<KEYWORD_BEGIN> Sentence()(Sentence())*<KEYWORD_END>
}
void Evaluate():{}
{
(<ID>|<ARRAY>) "=" Expression() ";"
}
void Expression():{}
{
Item()(<PLUSMINUS> Item())*
}
void Item():{}
{
Factor()(<MULTIPLYDIVIDE> Factor())*
}
void Factor():{}
{
<ID>|<ARRAY>|<INT>|<REAL>|("(" Expression() ")")
}
void IfSentence():{}
{
<KEYWORD_IF> "("Condition()")" Sentence() (LOOKAHEAD(1) <KEYWORD_ELSE> Sentence())*
}
void WhileSentence():{}
{
<KEYWORD_WHILE> "("Condition()")" Sentence()
}
void Condition():{}
{
Expression()<WORD> Expression()
}
void WriteSentence():{}
{
<KEYWORD_WRITE> "(" Expression() (Expression())* ")" ";"
}
void ReadSentence():{}
{
<KEYWORD_READ> "(" <ID>|<ARRAY> (","<ID>|<ARRAY>)* ")" ";"
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -