Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg @ 16675:0fc43b066eee
SL/SourceAttribution: correct some omissions, and in particular add new node SLParenExpressionNode to represent a parenthesized expression; this is semantically neutral of course, but needed to account correctly for the text of such an expression (as opposed to its contents).
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Fri, 01 Aug 2014 16:30:22 -0700 |
parents | abe7128ca473 |
children | d654cd5ed05a |
comparison
equal
deleted
inserted
replaced
16674:70f47dbbcabd | 16675:0fc43b066eee |
---|---|
82 | 82 |
83 | 83 |
84 Block<out SLStatementNode result, boolean inLoop> | 84 Block<out SLStatementNode result, boolean inLoop> |
85 = (. factory.startBlock(); | 85 = (. factory.startBlock(); |
86 List<SLStatementNode> body = new ArrayList<>(); .) | 86 List<SLStatementNode> body = new ArrayList<>(); .) |
87 "{" (. int lBracePos = t.charPos; .) | 87 "{" (. int start = t.charPos; .) |
88 { | 88 { |
89 Statement<out SLStatementNode s, inLoop> (. body.add(s); .) | 89 Statement<out SLStatementNode s, inLoop> (. body.add(s); .) |
90 } | 90 } |
91 "}" (. int length = (t.charPos + t.val.length()) - lBracePos; .) | 91 "}" (. int length = (t.charPos + t.val.length()) - start; .) |
92 (. result = factory.finishBlock(body, lBracePos, length); .) | 92 (. result = factory.finishBlock(body, start, length); .) |
93 . | 93 . |
94 | 94 |
95 | 95 |
96 Statement<out SLStatementNode result, boolean inLoop> | 96 Statement<out SLStatementNode result, boolean inLoop> |
97 = (. result = null; .) | 97 = (. result = null; .) |
113 . | 113 . |
114 | 114 |
115 | 115 |
116 WhileStatement<out SLStatementNode result> | 116 WhileStatement<out SLStatementNode result> |
117 = | 117 = |
118 "while" | 118 "while" (. Token whileToken = t; .) |
119 "(" (. Token whileToken = t; .) | 119 "(" |
120 Expression<out SLExpressionNode condition> | 120 Expression<out SLExpressionNode condition> |
121 ")" | 121 ")" |
122 Block<out SLStatementNode body, true> (. result = factory.createWhile(whileToken, condition, body); .) | 122 Block<out SLStatementNode body, true> (. result = factory.createWhile(whileToken, condition, body); .) |
123 . | 123 . |
124 | 124 |
223 | | 223 | |
224 stringLiteral (. result = factory.createStringLiteral(t); .) | 224 stringLiteral (. result = factory.createStringLiteral(t); .) |
225 | | 225 | |
226 numericLiteral (. result = factory.createNumericLiteral(t); .) | 226 numericLiteral (. result = factory.createNumericLiteral(t); .) |
227 | | 227 | |
228 "(" Expression<out result> ")" | 228 "(" (. int start = t.charPos; .) |
229 Expression<out result> (. SLExpressionNode expr = result; .) | |
230 ")" (. int length = (t.charPos + t.val.length()) - start; .) | |
231 (. result = factory.createParenExpression(expr, start, length); .) | |
229 ) | 232 ) |
230 . | 233 . |
231 | 234 |
232 | 235 |
233 END SimpleLanguage. | 236 END SimpleLanguage. |