2017-05-08 1 views
0
VARNAME:[_a-zA-Z0-9.]+; 

prog:expression +; 

expression: VARNAME | 
    '!' expression | 
    expression '=' expression | 
    expression '+=' expression | 
    expression '-=' expression | 
    expression ('<'|'>') expression | 
    expression expression | 
    expression ('+'|'-'|'*'|'/'|'%') expression | 
    expression ('=='|'!=') expression | 
    expression ('>='|'<=') expression | 
    expression ('&&'|'||') expression | 
    expression ('++'|'--') | 
    ('++'|'--') expression |  
    '(' expression ')'| 
    '\'' expression '\'' | 
    expression ',' expression | 
    expression '*' | 
    '(' expression ')' expression | 
    expression '->' expression | 
    expression expression |   //var decl 
    expression '<' expression '>' expression | //class template 
    expression '[' expression ']' |   //array 
    expression '.' expression |   //class obj 
    expression '(' expression? ')' |   //func call 
    '{' expression '}'; 

구문 분석 텍스트 : 규칙이 작동하지 않는규칙이 작동하지 않는 이유는 무엇입니까?

(CKbdpBase*)handle->open(); 

, 그것은 "(CKbdpBase*)"가 올바르게 구문 분석 할 수 없습니다 통지.

규칙을 어떻게 수정합니까?

+1

[mcve] [질문] 읽어주세요. 정확한 오류 메시지를 게시하지 않았습니다. –

답변

0

나는 당신이 놓친 생각 :

  • VARNAME 세미콜론
  • expression 내부 prog 규칙의 말 : prog: expression + ';' ;