freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]編譯原理課程設(shè)計(jì)報(bào)告-資料下載頁(yè)

2025-04-11 22:24本頁(yè)面
  

【正文】 syn.*。import 。action code {: static sym(String s) { return (s)。 } :}。parser code {: Lexer lexer。 Exp parseResult。 public void syntax_error( current) { report_error(Syntax error ( + + ), (Token)current)。 } ErrorMsg errorMsg。 public void report_error(String message, Token tok) { (, message)。 } public Grm(Lexer l, ErrorMsg err) { this()。 errorMsg=err。 lexer=l。 }:}。scan with {: return ()。 :}。terminal String ID, STRING。terminal Integer INT。terminal COMMA, COLON, SEMICOLON, LPAREN, RPAREN, LBRACK, RBRACK, LBRACE, RBRACE, DOT, PLUS, MINUS, MUL, DIV, EQ, NE, LT, LE, GT, GE, AND, OR, ASSIGN, ARRAY, IF, THEN, ELSE, WHILE, FOR, TO, DO, LET, IN, END, OF, BREAK, NIL, FUNCTION, VAR, TYPE,UMINUS。non terminal Exp expr,proc。non terminal ExpList expr_seq,expr_list。non terminal FieldExpList field_list。non terminal Var lvalue。non terminal DecList declaration_list。non terminal Dec declaration。non terminal Ty type。non terminal FieldList type_fields。non terminal VarDec variable_declaration。non terminal TypeDec type_declaration,type_list。non terminal FunctionDec function_declaration,function_list。precedence right FUNCTION,TYPE。precedence right OF。precedence right DO, ELSE, THEN。precedence nonassoc ASSIGN。precedence left OR。precedence left AND。precedence nonassoc LE, GT, EQ, NEQ, GE, LT。 //or should not be placed hereprecedence left PLUS, MINUS。precedence left TIMES, DIVIDE。precedence left UMINUS。precedence left LBRACE。precedence left LBRACK。precedence left LPAREN。start with proc。proc ::= expr:e {: RESULT= e。=(Exp)e。:}。expr ::= MINUS:m expr:e {: RESULT= new OpExp(mleft,mright,new IntExp(mleft,mright,0),e)。 :} %prec UMINUS 。expr ::= STRING:s {: RESULT= new StringExp(sleft,sright,new String(s))。 :}。expr ::= INT:i {: RESULT= new IntExp(ileft,iright,new Integer(()))。 :}。expr ::= NIL:n {: RESULT= new NilExp(nleft,nright)。 :}。expr ::= ID:id {: RESULT= new VarExp(idleft,idright,new SimpleVar(idleft,idright,sym(id)))。 :}。expr ::= lvalue:l {: RESULT= new VarExp(lleft,lright,l)。 :}。expr ::= expr:e1 PLUS:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 MINUS:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 MUL:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 DIV:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 OR:o expr:e2 {: RESULT= new IfExp(oleft,oright,e1,new IntExp(,1),e2)。 :}。expr ::= expr:e1 AND:o expr:e2 {: RESULT= new IfExp(oleft,oright,e1,e2,new IntExp(,0))。 :}。expr ::= expr:e1 EQ:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 NE:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 GT:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 GE:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 LT:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= expr:e1 LE:o expr:e2 {: RESULT= new OpExp(oleft,oright,e1,e2)。 :}。expr ::= lvalue:l ASSIGN expr:e {: RESULT= new AssignExp(lleft,lright,l,e)。 :}。expr ::= ID:id ASSIGN expr:e {: RESULT= new AssignExp(idleft,idright,new SimpleVar(idleft,idright,sym(id)),e)。 :}。expr ::= ID:id LPAREN expr_list:e RPAREN {: RESULT= new CallExp(idleft,idright,sym(id),e)。 :}。expr ::= ID:id LPAREN RPAREN {: RESULT= new CallExp(idleft,idright,sym(id),null)。 :}。expr ::= LPAREN:l expr_seq:e RPAREN {: RESULT= new SeqExp(lleft,lright,e)。 :}。expr ::= LPAREN:l RPAREN {: RESULT= new SeqExp(lleft,lright,null)。 :}。expr ::= ID:id LBRACE field_list:f RBRACE {: RESULT= new RecordExp(idleft,idright,sym(id),f)。 :}。expr ::= ID:id LBRACE RBRACE {: RESULT= new RecordExp(idleft,idright,sym(id),null)。 :}。expr ::= ID:id LBRACK expr:e1 RBRACK OF expr:e2 {: RESULT= new ArrayExp(idleft,idright,sym(id),e1,e2)。 :}。expr ::= IF:i expr:e1 THEN expr:e2 {: RESULT= new IfExp(ileft,iright,e1,e2)。 :}。expr ::= IF:i expr:e1 THEN expr:e2 ELSE expr:e3 {: RESULT= new IfExp(ileft,iright,e1,e2,e3)。 :}。expr ::= WHILE:w expr:e1 DO expr:e2 {: RESULT= new WhileExp(wleft,wright,e1,e2)。 :}。expr ::= FOR:f ID:id ASSIGN expr:e1 TO expr:e2 DO expr:e3 {: RESULT= new ForExp(fleft,fright,new VarDec(idleft,idright,sym(id),null,e1),e2,e3)。 :}。expr ::= BREAK:b {: RESULT= new BreakExp(bleft,bright)。 :}。expr ::= LET:l declaration_list:d IN END {: RESULT= new LetExp(lleft,lright,d,null)。 :}。 expr ::= LET:l declaration_list:d IN expr_seq:e END {: RESULT= new LetExp(lleft,lright,d,new SeqExp(eleft,eright,e))。 :}。expr_seq ::= expr:e {: RESULT= new ExpList(e,null)。 :}。expr_seq ::= expr:e1 SEMICOLON expr_seq:e2 {: RESULT= new ExpList(e1,e2)。 :}。expr_list ::= expr:e {: RESULT= new ExpList(e,null)。 :}。expr_list ::= expr:e1 COMMA expr_list:e2 {: RESULT= new ExpList(e1,e2)。 :}。field_list ::= ID:id EQ expr:e {: RESULT= new FieldExpList(idleft,idright,sym(id),e,null)。 :}。field_list ::= ID:id EQ expr:e COMMA field_list:f {: RESULT= new FieldExpList(fleft,fright,sym(id),e,f)。 :}。lvalue ::= ID:id1 DOT ID:id2 {: RESULT= new FieldVar(id2left,id2right,new SimpleVar(id1left,id1right,sym(id1)),sym(id2))。 :}。lvalue ::= lvalue:l DOT ID:id {: RESULT= new FieldVar(idleft,idright,l,sym(id))。 :}。lvalue ::= lvalue:l LBRACK expr:e RBRACK {: RESULT= new SubscriptVar(eleft,eright,l,e)。 :}。lvalue ::= ID:id LBRACK expr:e RBRACK {: RESULT= new SubscriptVar(eleft,eright,new SimpleVar(idleft,idright,sym(id)),e)。 :}。declaration_list ::= declaration:d {: RESULT= new DecList(d,null)。 :}。declaration_list ::= declaration:d1 declaration_list:d2 {: RESULT= new DecList(d1,d2)。 :}。declaration ::= type_list:t {: RESULT= t。 :}。 declaration ::= variable_declaration:v {: RESULT= v。 :}。declaration ::= function_list:f {: RESULT= f。 :}。type_list ::= type_declaration:t {: RESULT= t。 :}。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1