1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
[:
#include <QtCore/QString>
#include <kdebug.h>
:]
%parserclass (protected declaration)
[:
void expectedSymbol(Op::AstNode::AstNodeKind kind, const QString& name);
void expectedToken(int kind, enum TokenType tok, const QString& name);
:]
%token PLUS ("+"), MUL ("*"), INV ("-"), NUM ("123"), POW ("^"), BR ("BREAK"), NOT ("NOT"), L_PAREN ("("), R_PAREN (")"), QUESTION ("?"), COLON (":") ;;
#expr=expr @ BR
-> document ;;
NUM
-> number ;;
%< number
%bin PLUS 2 %left
%bin MUL 4 %left
%pre NOT 3
%post INV 1
%bin POW 5 %right
%paren L_PAREN R_PAREN
%tern QUESTION COLON 1 %left
%> expr ;;
[:
#include "Optokentext.h"
namespace Op
{
void Parser::expectedSymbol(Op::AstNode::AstNodeKind kind, const QString& name) { kDebug() << "In AstNode " << kind << ": Expected symbol " << name << " Token: " << tokenText(yytoken) << "(" << yytoken << ", \"" << "\"). Position: " << tokenStream->index(); abort(); }
void Parser::expectedToken(int kind, enum TokenType tok, const QString& name) { kDebug() << "Read Token: " << tokenText(kind) << "(" << kind << ", \"" << "\"). Expected token " << name << " (" << tok << ")"; abort(); }
}
:]
|