BNF:9: EXPR ::= EXPRTERM (EXPROP EXPRTERM)
| 2174 | |
| 2175 | // BNF:9: EXPR ::= EXPRTERM (EXPROP EXPRTERM)* |
| 2176 | asCScriptNode *asCParser::ParseExpression() |
| 2177 | { |
| 2178 | asCScriptNode *node = CreateNode(snExpression); |
| 2179 | if( node == 0 ) return 0; |
| 2180 | |
| 2181 | node->AddChildLast(ParseExprTerm()); |
| 2182 | if( isSyntaxError ) return node; |
| 2183 | |
| 2184 | for(;;) |
| 2185 | { |
| 2186 | sToken t; |
| 2187 | GetToken(&t); |
| 2188 | RewindTo(&t); |
| 2189 | |
| 2190 | if( !IsOperator(t.type) ) |
| 2191 | return node; |
| 2192 | |
| 2193 | node->AddChildLast(ParseExprOperator()); |
| 2194 | if( isSyntaxError ) return node; |
| 2195 | |
| 2196 | node->AddChildLast(ParseExprTerm()); |
| 2197 | if( isSyntaxError ) return node; |
| 2198 | } |
| 2199 | UNREACHABLE_RETURN; |
| 2200 | } |
| 2201 | |
| 2202 | // BNF:10: EXPRTERM ::= ((TYPE '=')? INITLIST) | (EXPRPREOP* EXPRVALUE EXPRPOSTOP*) |
| 2203 | asCScriptNode *asCParser::ParseExprTerm() |
no test coverage detected