Warning, /kdevelop/kdevelop-pg-qt/kdev-pg/test/op2.g is written in an unsupported language. File is not indexed.
0001 [: 0002 #include <QString> 0003 #include <kdebug.h> 0004 :] 0005 0006 %parserclass (public declaration) 0007 [: 0008 QString token(int pos = 1); 0009 :] 0010 0011 %parser_bits_header "Op2tokenstream.h" 0012 0013 %parserclass (protected declaration) 0014 [: 0015 void expectedSymbol(Op2::AstNode::AstNodeKind kind, const QString& name); 0016 void expectedToken(int kind, enum TokenType tok, const QString& name); 0017 :] 0018 0019 %parserclass (private declaration) 0020 [: 0021 QHash<QString, uint> pre; 0022 QHash<QString, QPair<bool, uint> > post; 0023 QHash<QString, QPair<bool, uint> > bin; 0024 QHash<QString, QPair<QString, QPair<bool, uint> > > tern; 0025 QHash<QString, QString> paren; 0026 :] 0027 0028 %token BR, PRE, POST, BIN, PAREN, TERN, LEFT, RIGHT, NUMBER, OPERATOR ;; 0029 0030 (#line=line BR BR*)* 0031 -> document ;; 0032 0033 ?(PRE [: op1 = token(); :] OPERATOR [: priority = token().toUInt(); :] NUMBER 0034 [: pre[op1] = priority; :] 0035 | POST [: op1 = token(); :] OPERATOR [: priority = token().toUInt(); :] NUMBER 0036 (LEFT [: isLeft = true; :] | RIGHT [: isLeft = false; :] | 0 [: isLeft = true; :] ) 0037 [: post[op1] = qMakePair(isLeft, priority); :] 0038 | BIN [: op1 = token(); :] OPERATOR [: priority = token().toUInt(); :] NUMBER 0039 (LEFT [: isLeft = true; :] | RIGHT [: isLeft = false; :] ) 0040 [: bin[op1] = qMakePair(isLeft, priority); :] 0041 | TERN [: op1 = token(); :] OPERATOR [: op2 = token(); :] OPERATOR [: priority = token().toUInt(); :] NUMBER 0042 (LEFT [: isLeft = true; :] | RIGHT [: isLeft = false; :] ) 0043 [: tern[op1] = qMakePair(op2, qMakePair(isLeft, priority)); :] 0044 | PAREN [: op1 = token(); :] OPERATOR [: op2 = token(); :] OPERATOR 0045 [: paren[op1] = op2; :] 0046 | expr=expr) 0047 -> line [ 0048 temporary variable isLeft: bool; 0049 temporary variable priority: uint; 0050 temporary variable op1: QString; 0051 temporary variable op2: QString; 0052 ] ;; 0053 0054 NUMBER 0055 -> number ;; 0056 0057 %< number 0058 %pre ?[: pre.contains(op = token()) :] OPERATOR %priority[: pre[op] :] 0059 %post ?[: post.contains(op = token()) :] OPERATOR %priority[: post[op].second :] %isLeft[: post[op].first :] 0060 %bin ?[: bin.contains(op = token()) :] OPERATOR %priority[: bin[op].second :] %isLeft[: bin[op].first :] 0061 %tern ?[: tern.contains(op = token()) :] OPERATOR ?[: tern[op].first == token() :] OPERATOR %priority[: tern[op].second.second :] %isLeft[: tern[op].second.first :] 0062 %paren ?[: paren.contains(op = token()) :] OPERATOR ?[: paren[op] == token() :] OPERATOR 0063 %> expr [ 0064 temporary variable op: QString; 0065 ];; 0066 0067 [: 0068 #include "Op2tokentext.h" 0069 0070 namespace Op2 0071 { 0072 0073 void Parser::expectedSymbol(Op2::AstNode::AstNodeKind kind, const QString& name) { kDebug() << "In AstNode " << kind << ": Expected symbol " << name << " Token: " << tokenText(yytoken) << "(" << yytoken << ", \"" << "\"). Position: " << tokenStream->index(); abort(); } 0074 void Parser::expectedToken(int kind, enum TokenType tok, const QString& name) { kDebug() << "Read Token: " << tokenText(kind) << "(" << kind << ", \"" << "\"). Expected token " << name << " (" << tok << ")"; abort(); } 0075 QString Parser::token(int pos) 0076 { 0077 return reinterpret_cast<Op2::TokenStream*>(tokenStream) 0078 ->tokenString(tokenStream->index() + pos - 2); 0079 } 0080 0081 } 0082 :]