From eacd7e172761853019dfe7122f48a5275b0cabe5 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 8 Nov 2010 11:12:48 +0000 Subject: [PATCH] trying to fix grammar --- src/monkey/seaspider/C.jj | 29 +++++++++++++++++-- .../seaspider/ExpressionExtractorVisitor.java | 14 ++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/monkey/seaspider/C.jj b/src/monkey/seaspider/C.jj index 9cab0974a..781c516bb 100644 --- a/src/monkey/seaspider/C.jj +++ b/src/monkey/seaspider/C.jj @@ -123,8 +123,31 @@ TOKEN : { | <#OCTAL_LITERAL: "0" (["0"-"7"])*> | )? (["f","F","d","D"])? | "." (["0"-"9"])+ ()? (["f","F","d","D"])? | (["0"-"9"])+ (["f","F","d","D"])? | (["0"-"9"])+ ()? ["f","F","d","D"]> | <#EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+> -| -| +| + < CHARACTER_LITERAL: + "'" + ( (~["'","\\","\n","\r"]) + | ("\\" + ( ["n","t","b","r","f","\\","'","\""] + | ["0"-"7"] ( ["0"-"7"] )? + | ["0"-"3"] ["0"-"7"] ["0"-"7"] + ) + ) + ) + "'" + > +| < STRING_LITERAL: + "\"" + ( (~["\"","\\","\n","\r"]) + | ("\\" + ( ["n","t","b","r","f","\\","'","\""] + | ["0"-"7"] ( ["0"-"7"] )? + | ["0"-"3"] ["0"-"7"] ["0"-"7"] + ) + ) + )* + "\"" + > } TOKEN : { @@ -222,7 +245,7 @@ void ParameterList() : {} void ParameterDeclaration() : {} { - TypeSpecifier() [ Array () ] + TypeSpecifier() [ [ Array () ]] } void VariableDeclaration() : {} diff --git a/src/monkey/seaspider/org/gnunet/seaspider/ExpressionExtractorVisitor.java b/src/monkey/seaspider/org/gnunet/seaspider/ExpressionExtractorVisitor.java index 7feab1e10..ea3294e2e 100644 --- a/src/monkey/seaspider/org/gnunet/seaspider/ExpressionExtractorVisitor.java +++ b/src/monkey/seaspider/org/gnunet/seaspider/ExpressionExtractorVisitor.java @@ -26,6 +26,7 @@ import org.gnunet.seaspider.parser.nodes.JumpStatement; import org.gnunet.seaspider.parser.nodes.LogicalANDExpression; import org.gnunet.seaspider.parser.nodes.LogicalORExpression; import org.gnunet.seaspider.parser.nodes.MultiplicativeExpression; +import org.gnunet.seaspider.parser.nodes.Node; import org.gnunet.seaspider.parser.nodes.NodeChoice; import org.gnunet.seaspider.parser.nodes.NodeSequence; import org.gnunet.seaspider.parser.nodes.NodeToken; @@ -141,10 +142,15 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor { public void visit(ParameterDeclaration n) { skip_mode = false; assert current_expression == null; - current_expression = new ExpressionBuilder(); - n.f1.accept(this); - LineNumberInfo lin = LineNumberInfo.get(n); - current_expression.commit(lin.lineEnd); + if (n.f1.present()) + { + NodeSequence ns = (NodeSequence) n.f1.node; + Node var = ns.elementAt(0); + current_expression = new ExpressionBuilder(); + var.accept(this); + LineNumberInfo lin = LineNumberInfo.get(var); + current_expression.commit(lin.lineEnd); + } current_expression = null; skip_mode = true; } -- 2.25.1