决策可以匹配输入

时间:2016-02-19 00:33:40

标签: antlrworks

  

你好,我有很多错误"决定可以匹配输入这样的"和我的   结合语法,我尝试解决这些问题,但我没有成功。能够   谁来帮帮我?谢谢!

  options{ k=1; language= Java; output= AST;

}

prog    : exp   
    ;
exp     : lval          
    | 'NIL'             
    | INT               
    | 'STRING'  
    | '(' exp_seq ')'       
    | ID ST 
    | lval ':=' exp             
    |'IF' exp 'THEN' exp EL
    | 'WHILE' exp 'DO' exp      
    | 'FOR' ID ':=' exp 'TO' exp 'DO' exp   
    | 'BREAK'               
    | 'LET' decs 'IN' exp_seq 'END' 
    |compor
    ;

ST  :  '(' args ')' 
    | '{' rcd '}'       
    |  '[' exp ']' 'OF' exp 
    ;

EL      :   'ELSE' exp  
        |
        ;    
    /* 
exp_t   : expp exp_t
    |
    ;   







OP  : '*'       
    |  '/'          
    |  '-'              

    | '+'
    |  '>'          
    |  '<'          
    |  '>='             
    |  '<='         
    |  '&'              
    |  '|'          
    |  '='          
    |  '<>'     
        ;     

        */
exp_seq :       
    | exp exp_seq_t         
    ;

exp_seq_t :     
     | ';' exp exp_seq_t    
     ;

decs :      
    | tydec decs            
    | vardec decs           
    | fundec decs           
    ;

tydec : 'TYPE' ID '=' ty    
    ;

ty : ID         
    | '{' tyfs '}'  
    | 'ARRAY' 'OF' ID       
    ;

tyfs :      
    | ID ':' ID tyfs_t  
    ;

tyfs_t : 
    | ',' ID ':' ID tyfs_t  
         ;

vardec : 'var' ID var_t     

    ;

var_t   : ':=' exp  
    | ':' ID ':=' exp   
    ;
    fundec : 'FUNCTION' ID '(' tyfs ')' Func_t 
           ;



Func_t  : '=' exp   
    | ',' ID '='exp 
    ;   

args    : exp args_t        
        | 
        ;

args_t :        
    | ','exp args_t     
    ;

rcd :   ID '='exp rcd_t     
       | 
    ;

rcd_t :             
    | ',' 'ID' '='exp rcd_t     
    ;

lval : ID       
    | T lval_t  
    ;
T   : '.' ID
        | '[' exp ']'
        ;   


lval_t : T lval_t   
    |   
    ;

    INT : '0'..'9'+ ;
    ID : ( 'a'..'z'| 'A' .. 'Z')+ ;
/*  STRING : ( 'a'..'z'| 'A' .. 'Z')+ ; */


/*  DIV :'/' ;
    MUL:'*' ;
    MINUS : '-' ;
    PLUS : '+' ;
    OR : ('|');
    AND: ('&');
    LE : '<=' ;
    GE : '>=' ;
    GT :'>' ;
    LT :'<' ;
    EQ: '=';
    OPINCONNU :'<>';  */

atom    : '('exp')'
        | INT   
        | ID var_t
        ;

compor: compend or_bis?
     ;
or_bis  :'|' compend
    ;        

compend : comp compend_bis? 
    ;
compend_bis: '&' comp 
    ;           

 comp   : add comp_bis? 
     ;

comp_bis :'<=' add
     |'>=' add
     |'>' add
     |'<' add
     |'=' add
     |'<>' add
     ;

 add    : mult add_bis*   
        ;

 add_bis :'+'mult
         |'-'mult
         ;       

 mult   : neg mult_bis* 
    ;

mult_bis : '*' neg
     | '/' neg
     ;  

neg : ('-')? atom 
    ;       


    /*
MUL  DIV 

PLUS  MINUS
OR LE GE LT GT OPINCONNU EQ AND */
NOT_WS: ~('\...\ ' |' '| '\t' | '\n' | '\r'); ##

- 错误:

  • 错误:[决定可以匹配输入,例如&#34; T&#34;使用多个 备选方案:1,7结果,替代方案7被禁用 输入决策可以匹配输入,例如&#34;&#39;(&#39;&#34;使用多个 替代方案:5,13因此,替代方案13被禁用 输入决策可以匹配输入,例如&#34; ID&#34;使用多个 替代方案:1,6,7,13因此,替代方案6,7,13 禁用该输入[01:03:59]警告(200):tiger.g:15:9: 决策可以匹配输入,例如&#34; INT&#34;使用多种选择: 3,13因此,对于该输入禁用了替代方案13 [01:03:59]错误(201):tiger.g:15:9:以下替代方案可以 永远不会匹配:6,7

    决策可以匹配输入,例如&#34;&#39; |&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39;&amp;&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39;&lt; =&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39;&lt;&gt;&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39;&lt;&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39; =&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39;&gt; =&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39;&gt;&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39; +&#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 决策可以匹配输入,例如&#34;&#39; - &#39;&#34;使用多种选择: 1,2因此,对于该输入禁用了备选方案2 [01:03:59]警告(200):tiger.g:225:13:决定可以匹配我

输入&#34;&#39; *&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入  决策可以匹配输入,例如&#34;&#39; /&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 [决定可以匹配输入,例如&#34; T&#34;使用多种替代方案:1,7 结果,对该输入禁用了替代方案7 决策可以匹配输入,例如&#34;&#39;(&#39;&#34;使用多种替代方案:5,13 结果,对于该输入禁用了替代方案13 决策可以匹配输入,例如&#34; ID&#34;使用多种选择:1,6,7,13 结果,对于该输入禁用了替代方案6,7,13 决策可以匹配输入,例如&#34; INT&#34;使用多种选择:3,13 结果,对于该输入禁用了替代方案13以下替代方案永远不能匹配:6,7

决策可以匹配输入,例如&#34;&#39; |&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39;&amp;&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39;&lt; =&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39;&lt;&gt;&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入  决策可以匹配输入,例如&#34;&#39;&lt;&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39; =&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39;&gt; =&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39;&gt;&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入  决策可以匹配输入,例如&#34;&#39; +&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39; - &#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39; *&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入 决策可以匹配输入,例如&#34;&#39; /&#39;&#34;使用多种选择:1,2 结果,替代(s)2被禁用该输入  对未定义规则的引用:exp  对未定义规则的引用:exp  对未定义规则的引用:exp  对未定义规则的引用:exp  对未定义规则的引用:exp 对未定义规则的引用:rcd  对未定义规则的引用:exp

0 个答案:

没有答案