Skip to content

Commit

Permalink
Instruction RET fait un seul UP et ne retourne pas de valeur.
Browse files Browse the repository at this point in the history
git-svn-id: http://ladystorm.bigmadarea.net/svn/nf11@34 1e871849-ca45-4617-b4d0-c39c463a1ac7
  • Loading branch information
jeremy committed May 26, 2010
1 parent a8eec49 commit c1b817c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/logoparsing/Logo.g
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ tokens {
POUR = 'POUR';
FIN = 'FIN';
CHAINE;
RET = 'RET';
}
@lexer::header {
package logoparsing;
Expand Down Expand Up @@ -89,6 +90,7 @@ instruction
| ECRIS^ expr
| procedure
| exec
| ret
;
expr : sumExpr
;
Expand Down Expand Up @@ -128,3 +130,5 @@ procedure
exec : a = ID^ { if (!procedures.contains($a.getText())) {valide = false; Log.appendnl("La procedure "+$a.getText()+" n'a pas ete declaree.");}}
((expr | id_lecture | chaine))*
;
ret : RET^ (expr|chaine)
;
6 changes: 5 additions & 1 deletion src/logoparsing/LogoTree.g
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ instruction
| VE {traceur.init();}
| procedure
| exec
| ret
;
expr returns [double v]
: ^(OP_PLUS x=expr y=expr) {$v = $x.v + $y.v;}
Expand Down Expand Up @@ -175,7 +176,7 @@ procedure
;
arg_dec : a = ID {procedureVars.get(procedureName).addVar($a.getText());}
;
exec
exec returns [String r]
@init {
compteur = 1;
}
Expand All @@ -190,3 +191,6 @@ exec
arg_exec: x = expr {procedureVars.get(procedureName).initVar(compteur++, String.valueOf($x.v));}
| s = chaine {procedureVars.get(procedureName).initVar(compteur++, $s.s);}
;
ret returns [String r]
: ^(RET (x = expr {r = String.valueOf($x.v);}|s = chaine {r = $s.s;})) {consumeUntil(input, Token.UP);}
;

0 comments on commit c1b817c

Please sign in to comment.