⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmm.jjt

📁 是Google提供的一个 Windows 应用程序;用户可以借助于该程序
💻 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 + -