+++ /dev/null
-//
-// Generated by JTB 1.3.2
-//
-
-
-
-PARSER_BEGIN(CParser)
-import java.util.*;
-import org.gnunet.monkey.parser.nodes.*;
-import java.util.Vector;
-
-
-public class CParser
-{
- public static void main(String args[])
- {
- CParser parser;
- if ( args.length == 0 )
- {
- System.out.println("C Parser Version 0.1Alpha: Reading from standard input . . .");
- parser = new CParser(System.in);
- }
- else
- if ( args.length == 1 )
- {
- System.out.println("C Parser Version 0.1Alpha: Reading from file " + args[0]+ " . . .");
- try
- {
- parser = new CParser(new java.io.FileInputStream(args[0]));
- }
- catch (java.io.FileNotFoundException e)
- {
- System.out.println("C Parser Version 0.1: File " + args[0]+ " not found.");
- return;
- }
- }
- else
- {
- System.out.println("C Parser Version 0.1Alpha: Usage is one of:");
- System.out.println(" java CParser < inputfile");
- System.out.println("OR");
- System.out.println(" java CParser inputfile");
- return;
- }
- try
- {
- parser.TranslationUnit();
- System.out.println("C Parser Version 0.1Alpha: Java program parsed successfully.");
- }
- catch (ParseException e)
- {
- System.out.println("C Parser Version 0.1Alpha: Encountered errors during parse.");
- e.printStackTrace();
- }
- }
-}
-
-class JTBToolkit {
- static NodeToken makeNodeToken(Token t) {
- return new NodeToken(t.image.intern(), t.kind, t.beginLine, t.beginColumn, t.endLine, t.endColumn);
- }
-}
-
-
-PARSER_END(CParser)
-
-SKIP :
-{
- " "
- | "\t"
- | "\n"
- | "\r"
- | <"//" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")>
- | <"/*" (~["*"])* "*" ("*" | ~["*", "/"] (~["*"])* "*")* "/">
- | "#" : PREPROCESSOR_OUTPUT
-}
-
-<PREPROCESSOR_OUTPUT> SKIP :
-{
- "\n" : DEFAULT
-}
-
-<PREPROCESSOR_OUTPUT> MORE :
-{
- "\\\n"
- | "\\\r\n"
- | <~[]>
-}
-
-TOKEN :
-{
- <INTEGER_LITERAL: <DECIMAL_LITERAL> (["l", "L"])? (["l", "L"])? | <HEX_LITERAL> (["l", "L"])? (["l", "L"])? | <OCTAL_LITERAL> (["l", "L"])? (["l", "L"])?>
- | <#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])*>
- | <#HEX_LITERAL: "0" ["x", "X"] (["0"-"9", "a"-"f", "A"-"F"])+>
- | <#OCTAL_LITERAL: "0" (["0"-"7"])*>
- | <FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f", "F", "d", "D"])? | "." (["0"-"9"])+ (<EXPONENT>)? (["f", "F", "d", "D"])? | (["0"-"9"])+ <EXPONENT> (["f", "F", "d", "D"])? | (["0"-"9"])+ (<EXPONENT>)? ["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"] | (["\n", "\r"] | "\r\n")))* "\"" ((["\r", "\n", " "])* "\"" (~["\"", "\\", "\n", "\r"] | "\\" (["n", "t", "b", "r", "f", "\\", "\'", "\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"] | (["\n", "\r"] | "\r\n")))* "\"")*>
-}
-
-TOKEN :
-{
- <CONTINUE: "continue">
- | <VOLATILE: "volatile">
- | <REGISTER: "register">
- | <UNSIGNED: "unsigned">
- | <TYPEDEF: "typedef">
- | <DFLT: "default">
- | <DOUBLE: "double">
- | <SIZEOF: "sizeof">
- | <SWITCH: "switch">
- | <RETURN: "return">
- | <EXTERN: "extern">
- | <STRUCT: "struct">
- | <STATIC: "static">
- | <SIGNED: "signed">
- | <WHILE: "while">
- | <BREAK: "break">
- | <UNION: "union">
- | <CONST: "const">
- | <FLOAT: "float">
- | <SHORT: "short">
- | <ELSE: "else">
- | <CASE: "case">
- | <LONG: "long">
- | <ENUM: "enum">
- | <AUTO: "auto">
- | <VOID: "void">
- | <CHAR: "char">
- | <GOTO: "goto">
- | <FOR: "for">
- | <INT: "int">
- | <IF: "if">
- | <DO: "do">
-}
-
-TOKEN :
-{
- <IDENTIFIER: <LETTER> (<LETTER> | <DIGIT>)*>
- | <#LETTER: ["$", "A"-"Z", "_", "a"-"z"]>
- | <#DIGIT: ["0"-"9"]>
-}
-
-TranslationUnit TranslationUnit() :
-{
- NodeList n0 = new NodeList();
- ExternalDeclaration n1;
-
-
-}
-{
- (
- n1=ExternalDeclaration()
- { n0.addNode(n1); }
- )+
- { n0.nodes.trimToSize(); }
-
- { return new TranslationUnit(n0); }
-}
-
-ExternalDeclaration ExternalDeclaration() :
-{
- NodeListOptional n0 = new NodeListOptional();
- StorageClassSpecifier n1;
- NodeChoice n2;
- FunctionDeclaration n3;
- StructOrUnionSpecifier n4;
- VariableDeclaration n5;
- TypeDeclaration n6;
-
-
-}
-{
- (
- n1=StorageClassSpecifier()
- { n0.addNode(n1); }
- )*
- { n0.nodes.trimToSize(); }
- (
- (
- LOOKAHEAD(FunctionDeclaration())
- n3=FunctionDeclaration()
- { n2 = new NodeChoice(n3, 0); }
- |
- LOOKAHEAD(StructOrUnionSpecifier())
- n4=StructOrUnionSpecifier()
- { n2 = new NodeChoice(n4, 1); }
- |
- LOOKAHEAD(VariableDeclaration())
- n5=VariableDeclaration()
- { n2 = new NodeChoice(n5, 2); }
- |
- LOOKAHEAD(TypeDeclaration())
- n6=TypeDeclaration()
- { n2 = new NodeChoice(n6, 3); }
- )
-
- )
-
- { return new ExternalDeclaration(n0,n2); }
-}
-
-FunctionDeclaration FunctionDeclaration() :
-{
- TypeSpecifier n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
- NodeOptional n5 = new NodeOptional();
- ParameterList n6;
- NodeToken n7;
- Token n8;
- NodeChoice n9;
- NodeToken n10;
- Token n11;
- CompoundStatement n12;
-
-
-}
-{
- n0=TypeSpecifier()
- n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
- n4="(" { n3 = JTBToolkit.makeNodeToken(n4); }
- (
- n6=ParameterList()
- { n5.addNode(n6); }
- )?
- n8=")" { n7 = JTBToolkit.makeNodeToken(n8); }
- (
- (
- n11=";" { n10 = JTBToolkit.makeNodeToken(n11); }
- { n9 = new NodeChoice(n10, 0); }
- |
- n12=CompoundStatement()
- { n9 = new NodeChoice(n12, 1); }
- )
-
- )
-
- { return new FunctionDeclaration(n0,n1,n3,n5,n7,n9); }
-}
-
-StorageClassSpecifier StorageClassSpecifier() :
-{
- NodeChoice n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
-
-
-}
-{
- (
- (
- n2=<STATIC> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n4=<EXTERN> { n3 = JTBToolkit.makeNodeToken(n4); }
- { n0 = new NodeChoice(n3, 1); }
- )
-
- )
-
- { return new StorageClassSpecifier(n0); }
-}
-
-TypeDeclaration TypeDeclaration() :
-{
- NodeToken n0;
- Token n1;
- NodeChoice n2;
- DataType n3;
- FunctionType n4;
- NodeToken n5;
- Token n6;
-
-
-}
-{
- n1=<TYPEDEF> { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- (
- LOOKAHEAD(DataType() ";")
- n3=DataType()
- { n2 = new NodeChoice(n3, 0); }
- |
- n4=FunctionType()
- { n2 = new NodeChoice(n4, 1); }
- )
-
- )
- n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
-
- { return new TypeDeclaration(n0,n2,n5); }
-}
-
-DataType DataType() :
-{
- StructOrUnionSpecifier n0;
- NodeToken n1;
- Token n2;
-
-
-}
-{
- n0=StructOrUnionSpecifier()
- n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
-
- { return new DataType(n0,n1); }
-}
-
-FunctionType FunctionType() :
-{
- TypeSpecifier n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
- NodeToken n5;
- Token n6;
- NodeToken n7;
- Token n8;
- NodeToken n9;
- Token n10;
- NodeOptional n11 = new NodeOptional();
- ParameterList n12;
- NodeToken n13;
- Token n14;
-
-
-}
-{
- n0=TypeSpecifier()
- n2="(" { n1 = JTBToolkit.makeNodeToken(n2); }
- n4="*" { n3 = JTBToolkit.makeNodeToken(n4); }
- n6=<IDENTIFIER> { n5 = JTBToolkit.makeNodeToken(n6); }
- n8=")" { n7 = JTBToolkit.makeNodeToken(n8); }
- n10="(" { n9 = JTBToolkit.makeNodeToken(n10); }
- (
- n12=ParameterList()
- { n11.addNode(n12); }
- )?
- n14=")" { n13 = JTBToolkit.makeNodeToken(n14); }
-
- { return new FunctionType(n0,n1,n3,n5,n7,n9,n11,n13); }
-}
-
-ParameterList ParameterList() :
-{
- ParameterDeclaration n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- ParameterDeclaration n5;
- NodeOptional n6 = new NodeOptional();
- NodeSequence n7;
- NodeToken n8;
- Token n9;
- NodeToken n10;
- Token n11;
-
-
-}
-{
- n0=ParameterDeclaration()
- (
- LOOKAHEAD(2)
- { n2 = new NodeSequence(2); }
- n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=ParameterDeclaration()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
- (
- { n7 = new NodeSequence(2); }
- n9="," { n8 = JTBToolkit.makeNodeToken(n9); }
- { n7.addNode(n8); }
- n11="..." { n10 = JTBToolkit.makeNodeToken(n11); }
- { n7.addNode(n10); }
- { n6.addNode(n7); }
- )?
-
- { return new ParameterList(n0,n1,n6); }
-}
-
-ParameterDeclaration ParameterDeclaration() :
-{
- TypeSpecifier n0;
- NodeToken n1;
- Token n2;
- NodeOptional n3 = new NodeOptional();
- Array n4;
-
-
-}
-{
- n0=TypeSpecifier()
- n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
- (
- n4=Array()
- { n3.addNode(n4); }
- )?
-
- { return new ParameterDeclaration(n0,n1,n3); }
-}
-
-VariableDeclaration VariableDeclaration() :
-{
- VariableClassSpecifier n0;
- TypeSpecifier n1;
- InitDeclaratorList n2;
- NodeToken n3;
- Token n4;
-
-
-}
-{
- n0=VariableClassSpecifier()
- n1=TypeSpecifier()
- n2=InitDeclaratorList()
- n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
-
- { return new VariableDeclaration(n0,n1,n2,n3); }
-}
-
-LocalVariableDeclaration LocalVariableDeclaration() :
-{
- NodeOptional n0 = new NodeOptional();
- NodeToken n1;
- Token n2;
- VariableDeclaration n3;
-
-
-}
-{
- (
- n2=<STATIC> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0.addNode(n1); }
- )?
- n3=VariableDeclaration()
-
- { return new LocalVariableDeclaration(n0,n3); }
-}
-
-VariableClassSpecifier VariableClassSpecifier() :
-{
- NodeListOptional n0 = new NodeListOptional();
- NodeChoice n1;
- NodeToken n2;
- Token n3;
- NodeToken n4;
- Token n5;
-
-
-}
-{
- (
- (
- n3=<AUTO> { n2 = JTBToolkit.makeNodeToken(n3); }
- { n1 = new NodeChoice(n2, 0); }
- |
- n5=<REGISTER> { n4 = JTBToolkit.makeNodeToken(n5); }
- { n1 = new NodeChoice(n4, 1); }
- )
- { n0.addNode(n1); }
- )*
- { n0.nodes.trimToSize(); }
-
- { return new VariableClassSpecifier(n0); }
-}
-
-TypeSpecifier TypeSpecifier() :
-{
- NodeOptional n0 = new NodeOptional();
- NodeToken n1;
- Token n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- NodeSequence n8;
- NodeToken n9;
- Token n10;
- NodeOptional n11 = new NodeOptional();
- NodeToken n12;
- Token n13;
- NodeToken n14;
- Token n15;
- NodeSequence n16;
- NodeToken n17;
- Token n18;
- NodeOptional n19 = new NodeOptional();
- NodeToken n20;
- Token n21;
- NodeToken n22;
- Token n23;
- NodeToken n24;
- Token n25;
- NodeSequence n26;
- NodeChoice n27;
- NodeToken n28;
- Token n29;
- NodeToken n30;
- Token n31;
- NodeOptional n32 = new NodeOptional();
- NodeChoice n33;
- NodeToken n34;
- Token n35;
- NodeSequence n36;
- NodeToken n37;
- Token n38;
- NodeOptional n39;
- NodeToken n40;
- Token n41;
- NodeToken n42;
- Token n43;
- NodeSequence n44;
- NodeToken n45;
- Token n46;
- NodeOptional n47;
- NodeToken n48;
- Token n49;
- StructOrUnionSpecifier n50;
- EnumSpecifier n51;
- NodeToken n52;
- Token n53;
- NodeOptional n54 = new NodeOptional();
- Pointer n55;
- NodeOptional n56 = new NodeOptional();
- Array n57;
-
-
-}
-{
- (
- n2=<CONST> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0.addNode(n1); }
- )?
- (
- (
- n5=<VOID> { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7=<CHAR> { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- |
- { n8 = new NodeSequence(2); }
- n10=<SHORT> { n9 = JTBToolkit.makeNodeToken(n10); }
- { n8.addNode(n9); }
- (
- n13=<INT> { n12 = JTBToolkit.makeNodeToken(n13); }
- { n11.addNode(n12); }
- )?
- { n8.addNode(n11); }
- { n3 = new NodeChoice(n8, 2); }
- |
- n15=<INT> { n14 = JTBToolkit.makeNodeToken(n15); }
- { n3 = new NodeChoice(n14, 3); }
- |
- { n16 = new NodeSequence(2); }
- n18=<LONG> { n17 = JTBToolkit.makeNodeToken(n18); }
- { n16.addNode(n17); }
- (
- n21=<LONG> { n20 = JTBToolkit.makeNodeToken(n21); }
- { n19.addNode(n20); }
- )?
- { n16.addNode(n19); }
- { n3 = new NodeChoice(n16, 4); }
- |
- n23=<FLOAT> { n22 = JTBToolkit.makeNodeToken(n23); }
- { n3 = new NodeChoice(n22, 5); }
- |
- n25=<DOUBLE> { n24 = JTBToolkit.makeNodeToken(n25); }
- { n3 = new NodeChoice(n24, 6); }
- |
- { n26 = new NodeSequence(2); }
- (
- (
- n29=<SIGNED> { n28 = JTBToolkit.makeNodeToken(n29); }
- { n27 = new NodeChoice(n28, 0); }
- |
- n31=<UNSIGNED> { n30 = JTBToolkit.makeNodeToken(n31); }
- { n27 = new NodeChoice(n30, 1); }
- )
-
- )
- { n26.addNode(n27); }
- (
- { n39 = new NodeOptional(); }
- { n47 = new NodeOptional(); }
- (
- n35=<CHAR> { n34 = JTBToolkit.makeNodeToken(n35); }
- { n33 = new NodeChoice(n34, 0); }
- |
- { n36 = new NodeSequence(2); }
- n38=<SHORT> { n37 = JTBToolkit.makeNodeToken(n38); }
- { n36.addNode(n37); }
- (
- n41=<INT> { n40 = JTBToolkit.makeNodeToken(n41); }
- { n39.addNode(n40); }
- )?
- { n36.addNode(n39); }
- { n33 = new NodeChoice(n36, 1); }
- |
- n43=<INT> { n42 = JTBToolkit.makeNodeToken(n43); }
- { n33 = new NodeChoice(n42, 2); }
- |
- { n44 = new NodeSequence(2); }
- n46=<LONG> { n45 = JTBToolkit.makeNodeToken(n46); }
- { n44.addNode(n45); }
- (
- n49=<LONG> { n48 = JTBToolkit.makeNodeToken(n49); }
- { n47.addNode(n48); }
- )?
- { n44.addNode(n47); }
- { n33 = new NodeChoice(n44, 3); }
- )
- { n32.addNode(n33); }
- )?
- { n26.addNode(n32); }
- { n3 = new NodeChoice(n26, 7); }
- |
- n50=StructOrUnionSpecifier()
- { n3 = new NodeChoice(n50, 8); }
- |
- n51=EnumSpecifier()
- { n3 = new NodeChoice(n51, 9); }
- |
- n53=<IDENTIFIER> { n52 = JTBToolkit.makeNodeToken(n53); }
- { n3 = new NodeChoice(n52, 10); }
- )
-
- )
- (
- n55=Pointer()
- { n54.addNode(n55); }
- )?
- (
- n57=Array()
- { n56.addNode(n57); }
- )?
-
- { return new TypeSpecifier(n0,n3,n54,n56); }
-}
-
-NoIdentifierTypeSpecifier NoIdentifierTypeSpecifier() :
-{
- NodeOptional n0 = new NodeOptional();
- NodeToken n1;
- Token n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- NodeSequence n8;
- NodeToken n9;
- Token n10;
- NodeOptional n11 = new NodeOptional();
- NodeToken n12;
- Token n13;
- NodeToken n14;
- Token n15;
- NodeSequence n16;
- NodeToken n17;
- Token n18;
- NodeOptional n19 = new NodeOptional();
- NodeToken n20;
- Token n21;
- NodeToken n22;
- Token n23;
- NodeToken n24;
- Token n25;
- NodeSequence n26;
- NodeChoice n27;
- NodeToken n28;
- Token n29;
- NodeToken n30;
- Token n31;
- NodeOptional n32 = new NodeOptional();
- NodeChoice n33;
- NodeToken n34;
- Token n35;
- NodeSequence n36;
- NodeToken n37;
- Token n38;
- NodeOptional n39;
- NodeToken n40;
- Token n41;
- NodeToken n42;
- Token n43;
- NodeSequence n44;
- NodeToken n45;
- Token n46;
- NodeOptional n47;
- NodeToken n48;
- Token n49;
- StructOrUnionSpecifier n50;
- EnumSpecifier n51;
- NodeOptional n52 = new NodeOptional();
- Pointer n53;
- NodeOptional n54 = new NodeOptional();
- Array n55;
-
-
-}
-{
- (
- n2=<CONST> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0.addNode(n1); }
- )?
- (
- (
- n5=<VOID> { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7=<CHAR> { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- |
- { n8 = new NodeSequence(2); }
- n10=<SHORT> { n9 = JTBToolkit.makeNodeToken(n10); }
- { n8.addNode(n9); }
- (
- n13=<INT> { n12 = JTBToolkit.makeNodeToken(n13); }
- { n11.addNode(n12); }
- )?
- { n8.addNode(n11); }
- { n3 = new NodeChoice(n8, 2); }
- |
- n15=<INT> { n14 = JTBToolkit.makeNodeToken(n15); }
- { n3 = new NodeChoice(n14, 3); }
- |
- { n16 = new NodeSequence(2); }
- n18=<LONG> { n17 = JTBToolkit.makeNodeToken(n18); }
- { n16.addNode(n17); }
- (
- n21=<LONG> { n20 = JTBToolkit.makeNodeToken(n21); }
- { n19.addNode(n20); }
- )?
- { n16.addNode(n19); }
- { n3 = new NodeChoice(n16, 4); }
- |
- n23=<FLOAT> { n22 = JTBToolkit.makeNodeToken(n23); }
- { n3 = new NodeChoice(n22, 5); }
- |
- n25=<DOUBLE> { n24 = JTBToolkit.makeNodeToken(n25); }
- { n3 = new NodeChoice(n24, 6); }
- |
- { n26 = new NodeSequence(2); }
- (
- (
- n29=<SIGNED> { n28 = JTBToolkit.makeNodeToken(n29); }
- { n27 = new NodeChoice(n28, 0); }
- |
- n31=<UNSIGNED> { n30 = JTBToolkit.makeNodeToken(n31); }
- { n27 = new NodeChoice(n30, 1); }
- )
-
- )
- { n26.addNode(n27); }
- (
- { n39 = new NodeOptional(); }
- { n47 = new NodeOptional(); }
- (
- n35=<CHAR> { n34 = JTBToolkit.makeNodeToken(n35); }
- { n33 = new NodeChoice(n34, 0); }
- |
- { n36 = new NodeSequence(2); }
- n38=<SHORT> { n37 = JTBToolkit.makeNodeToken(n38); }
- { n36.addNode(n37); }
- (
- n41=<INT> { n40 = JTBToolkit.makeNodeToken(n41); }
- { n39.addNode(n40); }
- )?
- { n36.addNode(n39); }
- { n33 = new NodeChoice(n36, 1); }
- |
- n43=<INT> { n42 = JTBToolkit.makeNodeToken(n43); }
- { n33 = new NodeChoice(n42, 2); }
- |
- { n44 = new NodeSequence(2); }
- n46=<LONG> { n45 = JTBToolkit.makeNodeToken(n46); }
- { n44.addNode(n45); }
- (
- n49=<LONG> { n48 = JTBToolkit.makeNodeToken(n49); }
- { n47.addNode(n48); }
- )?
- { n44.addNode(n47); }
- { n33 = new NodeChoice(n44, 3); }
- )
- { n32.addNode(n33); }
- )?
- { n26.addNode(n32); }
- { n3 = new NodeChoice(n26, 7); }
- |
- n50=StructOrUnionSpecifier()
- { n3 = new NodeChoice(n50, 8); }
- |
- n51=EnumSpecifier()
- { n3 = new NodeChoice(n51, 9); }
- )
-
- )
- (
- n53=Pointer()
- { n52.addNode(n53); }
- )?
- (
- n55=Array()
- { n54.addNode(n55); }
- )?
-
- { return new NoIdentifierTypeSpecifier(n0,n3,n52,n54); }
-}
-
-StructOrUnionSpecifier StructOrUnionSpecifier() :
-{
- NodeChoice n0;
- NodeSequence n1;
- StructOrUnion n2;
- NodeOptional n3 = new NodeOptional();
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- StructDeclarationList n8;
- NodeToken n9;
- Token n10;
- NodeSequence n11;
- StructOrUnion n12;
- NodeToken n13;
- Token n14;
-
-
-}
-{
- (
- LOOKAHEAD(3)
- { n1 = new NodeSequence(6); }
- n2=StructOrUnion()
- { n1.addNode(n2); }
- (
- n5=<IDENTIFIER> { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3.addNode(n4); }
- )?
- { n1.addNode(n3); }
- n7="{" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n1.addNode(n6); }
- n8=StructDeclarationList()
- { n1.addNode(n8); }
- n10="}" { n9 = JTBToolkit.makeNodeToken(n10); }
- { n1.addNode(n9); }
- { n0 = new NodeChoice(n1, 0); }
- |
- { n11 = new NodeSequence(2); }
- n12=StructOrUnion()
- { n11.addNode(n12); }
- n14=<IDENTIFIER> { n13 = JTBToolkit.makeNodeToken(n14); }
- { n11.addNode(n13); }
- { n0 = new NodeChoice(n11, 1); }
- )
-
- { return new StructOrUnionSpecifier(n0); }
-}
-
-StructOrUnion StructOrUnion() :
-{
- NodeChoice n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
-
-
-}
-{
- (
- (
- n2=<STRUCT> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n4=<UNION> { n3 = JTBToolkit.makeNodeToken(n4); }
- { n0 = new NodeChoice(n3, 1); }
- )
-
- )
-
- { return new StructOrUnion(n0); }
-}
-
-StructDeclarationList StructDeclarationList() :
-{
- NodeList n0 = new NodeList();
- StructDeclaration n1;
-
-
-}
-{
- (
- n1=StructDeclaration()
- { n0.addNode(n1); }
- )+
- { n0.nodes.trimToSize(); }
-
- { return new StructDeclarationList(n0); }
-}
-
-InitDeclaratorList InitDeclaratorList() :
-{
- InitDeclarator n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- InitDeclarator n5;
-
-
-}
-{
- n0=InitDeclarator()
- (
- { n2 = new NodeSequence(2); }
- n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=InitDeclarator()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
-
- { return new InitDeclaratorList(n0,n1); }
-}
-
-InitDeclarator InitDeclarator() :
-{
- NodeToken n0;
- Token n1;
- NodeOptional n2 = new NodeOptional();
- Array n3;
- NodeOptional n4 = new NodeOptional();
- NodeSequence n5;
- NodeToken n6;
- Token n7;
- Initializer n8;
-
-
-}
-{
- n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- n3=Array()
- { n2.addNode(n3); }
- )?
- (
- { n5 = new NodeSequence(2); }
- n7="=" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n5.addNode(n6); }
- n8=Initializer()
- { n5.addNode(n8); }
- { n4.addNode(n5); }
- )?
-
- { return new InitDeclarator(n0,n2,n4); }
-}
-
-StructDeclaration StructDeclaration() :
-{
- TypeSpecifier n0;
- NodeToken n1;
- Token n2;
- NodeOptional n3 = new NodeOptional();
- NodeChoice n4;
- Array n5;
- NodeSequence n6;
- NodeToken n7;
- Token n8;
- ConstantExpression n9;
- NodeOptional n10 = new NodeOptional();
- NodeToken n11;
- Token n12;
- NodeToken n13;
- Token n14;
-
-
-}
-{
- n0=TypeSpecifier()
- n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
- (
- (
- n5=Array()
- { n4 = new NodeChoice(n5, 0); }
- |
- { n6 = new NodeSequence(2); }
- n8=":" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n6.addNode(n7); }
- n9=ConstantExpression()
- { n6.addNode(n9); }
- { n4 = new NodeChoice(n6, 1); }
- )
- { n3.addNode(n4); }
- )?
- (
- n12=<IDENTIFIER> { n11 = JTBToolkit.makeNodeToken(n12); }
- { n10.addNode(n11); }
- )?
- n14=";" { n13 = JTBToolkit.makeNodeToken(n14); }
-
- { return new StructDeclaration(n0,n1,n3,n10,n13); }
-}
-
-EnumSpecifier EnumSpecifier() :
-{
- NodeToken n0;
- Token n1;
- NodeChoice n2;
- NodeSequence n3;
- NodeOptional n4 = new NodeOptional();
- NodeToken n5;
- Token n6;
- NodeToken n7;
- Token n8;
- EnumeratorList n9;
- NodeToken n10;
- Token n11;
- NodeToken n12;
- Token n13;
-
-
-}
-{
- n1=<ENUM> { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- (
- LOOKAHEAD(3)
- { n3 = new NodeSequence(5); }
- (
- n6=<IDENTIFIER> { n5 = JTBToolkit.makeNodeToken(n6); }
- { n4.addNode(n5); }
- )?
- { n3.addNode(n4); }
- n8="{" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n3.addNode(n7); }
- n9=EnumeratorList()
- { n3.addNode(n9); }
- n11="}" { n10 = JTBToolkit.makeNodeToken(n11); }
- { n3.addNode(n10); }
- { n2 = new NodeChoice(n3, 0); }
- |
- n13=<IDENTIFIER> { n12 = JTBToolkit.makeNodeToken(n13); }
- { n2 = new NodeChoice(n12, 1); }
- )
-
- )
-
- { return new EnumSpecifier(n0,n2); }
-}
-
-EnumeratorList EnumeratorList() :
-{
- Enumerator n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- Enumerator n5;
-
-
-}
-{
- n0=Enumerator()
- (
- { n2 = new NodeSequence(2); }
- n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=Enumerator()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
-
- { return new EnumeratorList(n0,n1); }
-}
-
-Enumerator Enumerator() :
-{
- NodeToken n0;
- Token n1;
- NodeOptional n2 = new NodeOptional();
- NodeSequence n3;
- NodeToken n4;
- Token n5;
- ConstantExpression n6;
-
-
-}
-{
- n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- { n3 = new NodeSequence(2); }
- n5="=" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3.addNode(n4); }
- n6=ConstantExpression()
- { n3.addNode(n6); }
- { n2.addNode(n3); }
- )?
-
- { return new Enumerator(n0,n2); }
-}
-
-Pointer Pointer() :
-{
- NodeToken n0;
- Token n1;
- NodeOptional n2 = new NodeOptional();
- NodeToken n3;
- Token n4;
- NodeOptional n5 = new NodeOptional();
- Pointer n6;
-
-
-}
-{
- n1="*" { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- n4=<CONST> { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- )?
- (
- n6=Pointer()
- { n5.addNode(n6); }
- )?
-
- { return new Pointer(n0,n2,n5); }
-}
-
-IdentifierList IdentifierList() :
-{
- NodeToken n0;
- Token n1;
- NodeListOptional n2 = new NodeListOptional();
- NodeSequence n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
-
-
-}
-{
- n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- { n3 = new NodeSequence(2); }
- n5="," { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3.addNode(n4); }
- n7=<IDENTIFIER> { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3.addNode(n6); }
- { n2.addNode(n3); }
- )*
- { n2.nodes.trimToSize(); }
-
- { return new IdentifierList(n0,n2); }
-}
-
-Initializer Initializer() :
-{
- NodeChoice n0;
- AssignmentExpression n1;
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- InitializerList n5;
- NodeOptional n6 = new NodeOptional();
- NodeToken n7;
- Token n8;
- NodeToken n9;
- Token n10;
-
-
-}
-{
- (
- (
- n1=AssignmentExpression()
- { n0 = new NodeChoice(n1, 0); }
- |
- { n2 = new NodeSequence(4); }
- n4="{" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=InitializerList()
- { n2.addNode(n5); }
- (
- n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
- { n6.addNode(n7); }
- )?
- { n2.addNode(n6); }
- n10="}" { n9 = JTBToolkit.makeNodeToken(n10); }
- { n2.addNode(n9); }
- { n0 = new NodeChoice(n2, 1); }
- )
-
- )
-
- { return new Initializer(n0); }
-}
-
-InitializerList InitializerList() :
-{
- Initializer n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- Initializer n5;
-
-
-}
-{
- n0=Initializer()
- (
- LOOKAHEAD(2)
- { n2 = new NodeSequence(2); }
- n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=Initializer()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
-
- { return new InitializerList(n0,n1); }
-}
-
-Array Array() :
-{
- NodeToken n0;
- Token n1;
- NodeOptional n2 = new NodeOptional();
- ConstantExpression n3;
- NodeToken n4;
- Token n5;
-
-
-}
-{
- n1="[" { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- n3=ConstantExpression()
- { n2.addNode(n3); }
- )?
- n5="]" { n4 = JTBToolkit.makeNodeToken(n5); }
-
- { return new Array(n0,n2,n4); }
-}
-
-Statement Statement() :
-{
- NodeChoice n0;
- LabeledStatement n1;
- ExpressionStatement n2;
- CompoundStatement n3;
- SelectionStatement n4;
- IterationStatement n5;
- JumpStatement n6;
-
-
-}
-{
- (
- (
- LOOKAHEAD(2)
- n1=LabeledStatement()
- { n0 = new NodeChoice(n1, 0); }
- |
- n2=ExpressionStatement()
- { n0 = new NodeChoice(n2, 1); }
- |
- n3=CompoundStatement()
- { n0 = new NodeChoice(n3, 2); }
- |
- n4=SelectionStatement()
- { n0 = new NodeChoice(n4, 3); }
- |
- n5=IterationStatement()
- { n0 = new NodeChoice(n5, 4); }
- |
- n6=JumpStatement()
- { n0 = new NodeChoice(n6, 5); }
- )
-
- )
-
- { return new Statement(n0); }
-}
-
-LabeledStatement LabeledStatement() :
-{
- NodeChoice n0;
- NodeSequence n1;
- NodeToken n2;
- Token n3;
- NodeToken n4;
- Token n5;
- Statement n6;
- NodeSequence n7;
- NodeToken n8;
- Token n9;
- ConstantExpression n10;
- NodeToken n11;
- Token n12;
- Statement n13;
- NodeSequence n14;
- NodeToken n15;
- Token n16;
- NodeToken n17;
- Token n18;
- Statement n19;
-
-
-}
-{
- (
- (
- { n1 = new NodeSequence(3); }
- n3=<IDENTIFIER> { n2 = JTBToolkit.makeNodeToken(n3); }
- { n1.addNode(n2); }
- n5=":" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n1.addNode(n4); }
- n6=Statement()
- { n1.addNode(n6); }
- { n0 = new NodeChoice(n1, 0); }
- |
- { n7 = new NodeSequence(4); }
- n9=<CASE> { n8 = JTBToolkit.makeNodeToken(n9); }
- { n7.addNode(n8); }
- n10=ConstantExpression()
- { n7.addNode(n10); }
- n12=":" { n11 = JTBToolkit.makeNodeToken(n12); }
- { n7.addNode(n11); }
- n13=Statement()
- { n7.addNode(n13); }
- { n0 = new NodeChoice(n7, 1); }
- |
- { n14 = new NodeSequence(3); }
- n16=<DFLT> { n15 = JTBToolkit.makeNodeToken(n16); }
- { n14.addNode(n15); }
- n18=":" { n17 = JTBToolkit.makeNodeToken(n18); }
- { n14.addNode(n17); }
- n19=Statement()
- { n14.addNode(n19); }
- { n0 = new NodeChoice(n14, 2); }
- )
-
- )
-
- { return new LabeledStatement(n0); }
-}
-
-ExpressionStatement ExpressionStatement() :
-{
- NodeOptional n0 = new NodeOptional();
- Expression n1;
- NodeToken n2;
- Token n3;
-
-
-}
-{
- (
- n1=Expression()
- { n0.addNode(n1); }
- )?
- n3=";" { n2 = JTBToolkit.makeNodeToken(n3); }
-
- { return new ExpressionStatement(n0,n2); }
-}
-
-CompoundStatement CompoundStatement() :
-{
- NodeToken n0;
- Token n1;
- NodeListOptional n2 = new NodeListOptional();
- NodeChoice n3;
- LocalVariableDeclaration n4;
- Statement n5;
- NodeToken n6;
- Token n7;
-
-
-}
-{
- n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
- (
- (
- LOOKAHEAD(LocalVariableDeclaration())
- n4=LocalVariableDeclaration()
- { n3 = new NodeChoice(n4, 0); }
- |
- n5=Statement()
- { n3 = new NodeChoice(n5, 1); }
- )
- { n2.addNode(n3); }
- )*
- { n2.nodes.trimToSize(); }
- n7="}" { n6 = JTBToolkit.makeNodeToken(n7); }
-
- { return new CompoundStatement(n0,n2,n6); }
-}
-
-SelectionStatement SelectionStatement() :
-{
- NodeChoice n0;
- NodeSequence n1;
- NodeToken n2;
- Token n3;
- NodeToken n4;
- Token n5;
- Expression n6;
- NodeToken n7;
- Token n8;
- Statement n9;
- NodeOptional n10 = new NodeOptional();
- NodeSequence n11;
- NodeToken n12;
- Token n13;
- Statement n14;
- NodeSequence n15;
- NodeToken n16;
- Token n17;
- NodeToken n18;
- Token n19;
- Expression n20;
- NodeToken n21;
- Token n22;
- Statement n23;
-
-
-}
-{
- (
- (
- { n1 = new NodeSequence(6); }
- n3=<IF> { n2 = JTBToolkit.makeNodeToken(n3); }
- { n1.addNode(n2); }
- n5="(" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n1.addNode(n4); }
- n6=Expression()
- { n1.addNode(n6); }
- n8=")" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n1.addNode(n7); }
- n9=Statement()
- { n1.addNode(n9); }
- (
- LOOKAHEAD(2)
- { n11 = new NodeSequence(2); }
- n13=<ELSE> { n12 = JTBToolkit.makeNodeToken(n13); }
- { n11.addNode(n12); }
- n14=Statement()
- { n11.addNode(n14); }
- { n10.addNode(n11); }
- )?
- { n1.addNode(n10); }
- { n0 = new NodeChoice(n1, 0); }
- |
- { n15 = new NodeSequence(5); }
- n17=<SWITCH> { n16 = JTBToolkit.makeNodeToken(n17); }
- { n15.addNode(n16); }
- n19="(" { n18 = JTBToolkit.makeNodeToken(n19); }
- { n15.addNode(n18); }
- n20=Expression()
- { n15.addNode(n20); }
- n22=")" { n21 = JTBToolkit.makeNodeToken(n22); }
- { n15.addNode(n21); }
- n23=Statement()
- { n15.addNode(n23); }
- { n0 = new NodeChoice(n15, 1); }
- )
-
- )
-
- { return new SelectionStatement(n0); }
-}
-
-IterationStatement IterationStatement() :
-{
- NodeChoice n0;
- NodeSequence n1;
- NodeToken n2;
- Token n3;
- NodeToken n4;
- Token n5;
- Expression n6;
- NodeToken n7;
- Token n8;
- Statement n9;
- NodeSequence n10;
- NodeToken n11;
- Token n12;
- Statement n13;
- NodeToken n14;
- Token n15;
- NodeToken n16;
- Token n17;
- Expression n18;
- NodeToken n19;
- Token n20;
- NodeToken n21;
- Token n22;
- NodeSequence n23;
- NodeToken n24;
- Token n25;
- NodeToken n26;
- Token n27;
- NodeOptional n28 = new NodeOptional();
- Expression n29;
- NodeToken n30;
- Token n31;
- NodeOptional n32 = new NodeOptional();
- Expression n33;
- NodeToken n34;
- Token n35;
- NodeOptional n36 = new NodeOptional();
- Expression n37;
- NodeToken n38;
- Token n39;
- Statement n40;
-
-
-}
-{
- (
- (
- { n1 = new NodeSequence(5); }
- n3=<WHILE> { n2 = JTBToolkit.makeNodeToken(n3); }
- { n1.addNode(n2); }
- n5="(" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n1.addNode(n4); }
- n6=Expression()
- { n1.addNode(n6); }
- n8=")" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n1.addNode(n7); }
- n9=Statement()
- { n1.addNode(n9); }
- { n0 = new NodeChoice(n1, 0); }
- |
- { n10 = new NodeSequence(7); }
- n12=<DO> { n11 = JTBToolkit.makeNodeToken(n12); }
- { n10.addNode(n11); }
- n13=Statement()
- { n10.addNode(n13); }
- n15=<WHILE> { n14 = JTBToolkit.makeNodeToken(n15); }
- { n10.addNode(n14); }
- n17="(" { n16 = JTBToolkit.makeNodeToken(n17); }
- { n10.addNode(n16); }
- n18=Expression()
- { n10.addNode(n18); }
- n20=")" { n19 = JTBToolkit.makeNodeToken(n20); }
- { n10.addNode(n19); }
- n22=";" { n21 = JTBToolkit.makeNodeToken(n22); }
- { n10.addNode(n21); }
- { n0 = new NodeChoice(n10, 1); }
- |
- { n23 = new NodeSequence(9); }
- n25=<FOR> { n24 = JTBToolkit.makeNodeToken(n25); }
- { n23.addNode(n24); }
- n27="(" { n26 = JTBToolkit.makeNodeToken(n27); }
- { n23.addNode(n26); }
- (
- n29=Expression()
- { n28.addNode(n29); }
- )?
- { n23.addNode(n28); }
- n31=";" { n30 = JTBToolkit.makeNodeToken(n31); }
- { n23.addNode(n30); }
- (
- n33=Expression()
- { n32.addNode(n33); }
- )?
- { n23.addNode(n32); }
- n35=";" { n34 = JTBToolkit.makeNodeToken(n35); }
- { n23.addNode(n34); }
- (
- n37=Expression()
- { n36.addNode(n37); }
- )?
- { n23.addNode(n36); }
- n39=")" { n38 = JTBToolkit.makeNodeToken(n39); }
- { n23.addNode(n38); }
- n40=Statement()
- { n23.addNode(n40); }
- { n0 = new NodeChoice(n23, 2); }
- )
-
- )
-
- { return new IterationStatement(n0); }
-}
-
-JumpStatement JumpStatement() :
-{
- NodeChoice n0;
- NodeSequence n1;
- NodeToken n2;
- Token n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- NodeSequence n8;
- NodeToken n9;
- Token n10;
- NodeToken n11;
- Token n12;
- NodeSequence n13;
- NodeToken n14;
- Token n15;
- NodeToken n16;
- Token n17;
- NodeSequence n18;
- NodeToken n19;
- Token n20;
- NodeOptional n21 = new NodeOptional();
- Expression n22;
- NodeToken n23;
- Token n24;
-
-
-}
-{
- (
- (
- { n1 = new NodeSequence(3); }
- n3=<GOTO> { n2 = JTBToolkit.makeNodeToken(n3); }
- { n1.addNode(n2); }
- n5=<IDENTIFIER> { n4 = JTBToolkit.makeNodeToken(n5); }
- { n1.addNode(n4); }
- n7=";" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n1.addNode(n6); }
- { n0 = new NodeChoice(n1, 0); }
- |
- { n8 = new NodeSequence(2); }
- n10=<CONTINUE> { n9 = JTBToolkit.makeNodeToken(n10); }
- { n8.addNode(n9); }
- n12=";" { n11 = JTBToolkit.makeNodeToken(n12); }
- { n8.addNode(n11); }
- { n0 = new NodeChoice(n8, 1); }
- |
- { n13 = new NodeSequence(2); }
- n15=<BREAK> { n14 = JTBToolkit.makeNodeToken(n15); }
- { n13.addNode(n14); }
- n17=";" { n16 = JTBToolkit.makeNodeToken(n17); }
- { n13.addNode(n16); }
- { n0 = new NodeChoice(n13, 2); }
- |
- { n18 = new NodeSequence(3); }
- n20=<RETURN> { n19 = JTBToolkit.makeNodeToken(n20); }
- { n18.addNode(n19); }
- (
- n22=Expression()
- { n21.addNode(n22); }
- )?
- { n18.addNode(n21); }
- n24=";" { n23 = JTBToolkit.makeNodeToken(n24); }
- { n18.addNode(n23); }
- { n0 = new NodeChoice(n18, 3); }
- )
-
- )
-
- { return new JumpStatement(n0); }
-}
-
-Expression Expression() :
-{
- AssignmentExpression n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- AssignmentExpression n5;
-
-
-}
-{
- n0=AssignmentExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=AssignmentExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
-
- { return new Expression(n0,n1); }
-}
-
-AssignmentExpression AssignmentExpression() :
-{
- NodeChoice n0;
- NodeSequence n1;
- UnaryExpression n2;
- AssignmentOperator n3;
- AssignmentExpression n4;
- ConditionalExpression n5;
-
-
-}
-{
- (
- LOOKAHEAD(UnaryExpression() AssignmentOperator())
- { n1 = new NodeSequence(4); }
- n2=UnaryExpression()
- { n1.addNode(n2); }
- n3=AssignmentOperator()
- { n1.addNode(n3); }
- n4=AssignmentExpression()
- { n1.addNode(n4); }
- { n0 = new NodeChoice(n1, 0); }
- |
- LOOKAHEAD(3)
- n5=ConditionalExpression()
- { n0 = new NodeChoice(n5, 1); }
- )
-
- { return new AssignmentExpression(n0); }
-}
-
-AssignmentOperator AssignmentOperator() :
-{
- NodeChoice n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
- NodeToken n5;
- Token n6;
- NodeToken n7;
- Token n8;
- NodeToken n9;
- Token n10;
- NodeToken n11;
- Token n12;
- NodeToken n13;
- Token n14;
- NodeToken n15;
- Token n16;
- NodeToken n17;
- Token n18;
- NodeToken n19;
- Token n20;
- NodeToken n21;
- Token n22;
-
-
-}
-{
- (
- (
- n2="=" { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n4="*=" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n0 = new NodeChoice(n3, 1); }
- |
- n6="/=" { n5 = JTBToolkit.makeNodeToken(n6); }
- { n0 = new NodeChoice(n5, 2); }
- |
- n8="%=" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n0 = new NodeChoice(n7, 3); }
- |
- n10="+=" { n9 = JTBToolkit.makeNodeToken(n10); }
- { n0 = new NodeChoice(n9, 4); }
- |
- n12="-=" { n11 = JTBToolkit.makeNodeToken(n12); }
- { n0 = new NodeChoice(n11, 5); }
- |
- n14="<<=" { n13 = JTBToolkit.makeNodeToken(n14); }
- { n0 = new NodeChoice(n13, 6); }
- |
- n16=">>=" { n15 = JTBToolkit.makeNodeToken(n16); }
- { n0 = new NodeChoice(n15, 7); }
- |
- n18="&=" { n17 = JTBToolkit.makeNodeToken(n18); }
- { n0 = new NodeChoice(n17, 8); }
- |
- n20="^=" { n19 = JTBToolkit.makeNodeToken(n20); }
- { n0 = new NodeChoice(n19, 9); }
- |
- n22="|=" { n21 = JTBToolkit.makeNodeToken(n22); }
- { n0 = new NodeChoice(n21, 10); }
- )
-
- )
-
- { return new AssignmentOperator(n0); }
-}
-
-ConditionalExpression ConditionalExpression() :
-{
- LogicalORExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- Expression n5;
- NodeToken n6;
- Token n7;
- ConditionalExpression n8;
-
-
-}
-{
- n0=LogicalORExpression()
- (
- { n2 = new NodeSequence(4); }
- n4="?" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=Expression()
- { n2.addNode(n5); }
- n7=":" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n2.addNode(n6); }
- n8=ConditionalExpression()
- { n2.addNode(n8); }
- { n1.addNode(n2); }
- )?
-
- { return new ConditionalExpression(n0,n1); }
-}
-
-ConstantExpression ConstantExpression() :
-{
- ConditionalExpression n0;
-
-
-}
-{
- n0=ConditionalExpression()
-
- { return new ConstantExpression(n0); }
-}
-
-LogicalORExpression LogicalORExpression() :
-{
- LogicalANDExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- LogicalORExpression n5;
-
-
-}
-{
- n0=LogicalANDExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="||" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=LogicalORExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )?
-
- { return new LogicalORExpression(n0,n1); }
-}
-
-LogicalANDExpression LogicalANDExpression() :
-{
- InclusiveORExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- LogicalANDExpression n5;
-
-
-}
-{
- n0=InclusiveORExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="&&" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=LogicalANDExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )?
-
- { return new LogicalANDExpression(n0,n1); }
-}
-
-InclusiveORExpression InclusiveORExpression() :
-{
- ExclusiveORExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- InclusiveORExpression n5;
-
-
-}
-{
- n0=ExclusiveORExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="|" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=InclusiveORExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )?
-
- { return new InclusiveORExpression(n0,n1); }
-}
-
-ExclusiveORExpression ExclusiveORExpression() :
-{
- ANDExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- ExclusiveORExpression n5;
-
-
-}
-{
- n0=ANDExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="^" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=ExclusiveORExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )?
-
- { return new ExclusiveORExpression(n0,n1); }
-}
-
-ANDExpression ANDExpression() :
-{
- EqualityExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- ANDExpression n5;
-
-
-}
-{
- n0=EqualityExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="&" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=ANDExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )?
-
- { return new ANDExpression(n0,n1); }
-}
-
-EqualityExpression EqualityExpression() :
-{
- RelationalExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- EqualityExpression n8;
-
-
-}
-{
- n0=RelationalExpression()
- (
- { n2 = new NodeSequence(2); }
- (
- (
- n5="==" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7="!=" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- )
-
- )
- { n2.addNode(n3); }
- n8=EqualityExpression()
- { n2.addNode(n8); }
- { n1.addNode(n2); }
- )?
-
- { return new EqualityExpression(n0,n1); }
-}
-
-RelationalExpression RelationalExpression() :
-{
- ShiftExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- NodeToken n8;
- Token n9;
- NodeToken n10;
- Token n11;
- RelationalExpression n12;
-
-
-}
-{
- n0=ShiftExpression()
- (
- { n2 = new NodeSequence(2); }
- (
- (
- n5="<" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7=">" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- |
- n9="<=" { n8 = JTBToolkit.makeNodeToken(n9); }
- { n3 = new NodeChoice(n8, 2); }
- |
- n11=">=" { n10 = JTBToolkit.makeNodeToken(n11); }
- { n3 = new NodeChoice(n10, 3); }
- )
-
- )
- { n2.addNode(n3); }
- n12=RelationalExpression()
- { n2.addNode(n12); }
- { n1.addNode(n2); }
- )?
-
- { return new RelationalExpression(n0,n1); }
-}
-
-ShiftExpression ShiftExpression() :
-{
- AdditiveExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- ShiftExpression n8;
-
-
-}
-{
- n0=AdditiveExpression()
- (
- { n2 = new NodeSequence(2); }
- (
- (
- n5="<<" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7=">>" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- )
-
- )
- { n2.addNode(n3); }
- n8=ShiftExpression()
- { n2.addNode(n8); }
- { n1.addNode(n2); }
- )?
-
- { return new ShiftExpression(n0,n1); }
-}
-
-AdditiveExpression AdditiveExpression() :
-{
- MultiplicativeExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- AdditiveExpression n8;
-
-
-}
-{
- n0=MultiplicativeExpression()
- (
- { n2 = new NodeSequence(2); }
- (
- (
- n5="+" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7="-" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- )
-
- )
- { n2.addNode(n3); }
- n8=AdditiveExpression()
- { n2.addNode(n8); }
- { n1.addNode(n2); }
- )?
-
- { return new AdditiveExpression(n0,n1); }
-}
-
-MultiplicativeExpression MultiplicativeExpression() :
-{
- CastExpression n0;
- NodeOptional n1 = new NodeOptional();
- NodeSequence n2;
- NodeChoice n3;
- NodeToken n4;
- Token n5;
- NodeToken n6;
- Token n7;
- NodeToken n8;
- Token n9;
- MultiplicativeExpression n10;
-
-
-}
-{
- n0=CastExpression()
- (
- { n2 = new NodeSequence(2); }
- (
- (
- n5="*" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3 = new NodeChoice(n4, 0); }
- |
- n7="/" { n6 = JTBToolkit.makeNodeToken(n7); }
- { n3 = new NodeChoice(n6, 1); }
- |
- n9="%" { n8 = JTBToolkit.makeNodeToken(n9); }
- { n3 = new NodeChoice(n8, 2); }
- )
-
- )
- { n2.addNode(n3); }
- n10=MultiplicativeExpression()
- { n2.addNode(n10); }
- { n1.addNode(n2); }
- )?
-
- { return new MultiplicativeExpression(n0,n1); }
-}
-
-CastExpression CastExpression() :
-{
- NodeChoice n0;
- NodeSequence n1;
- NodeToken n2;
- Token n3;
- TypeSpecifier n4;
- NodeToken n5;
- Token n6;
- CastExpression n7;
- UnaryExpression n8;
-
-
-}
-{
- (
- (
- LOOKAHEAD("(" TypeSpecifier() ")" CastExpression())
- { n1 = new NodeSequence(5); }
- n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
- { n1.addNode(n2); }
- n4=TypeSpecifier()
- { n1.addNode(n4); }
- n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
- { n1.addNode(n5); }
- n7=CastExpression()
- { n1.addNode(n7); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n8=UnaryExpression()
- { n0 = new NodeChoice(n8, 1); }
- )
-
- )
-
- { return new CastExpression(n0); }
-}
-
-UnaryExpression UnaryExpression() :
-{
- NodeChoice n0;
- PostfixExpression n1;
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- UnaryExpression n5;
- NodeSequence n6;
- NodeToken n7;
- Token n8;
- UnaryExpression n9;
- NodeSequence n10;
- UnaryOperator n11;
- CastExpression n12;
- NodeSequence n13;
- NodeToken n14;
- Token n15;
- NodeChoice n16;
- UnaryExpression n17;
- NodeSequence n18;
- NodeToken n19;
- Token n20;
- TypeSpecifier n21;
- NodeToken n22;
- Token n23;
-
-
-}
-{
- (
- (
- LOOKAHEAD(3)
- n1=PostfixExpression()
- { n0 = new NodeChoice(n1, 0); }
- |
- { n2 = new NodeSequence(2); }
- n4="++" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=UnaryExpression()
- { n2.addNode(n5); }
- { n0 = new NodeChoice(n2, 1); }
- |
- { n6 = new NodeSequence(2); }
- n8="--" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n6.addNode(n7); }
- n9=UnaryExpression()
- { n6.addNode(n9); }
- { n0 = new NodeChoice(n6, 2); }
- |
- { n10 = new NodeSequence(2); }
- n11=UnaryOperator()
- { n10.addNode(n11); }
- n12=CastExpression()
- { n10.addNode(n12); }
- { n0 = new NodeChoice(n10, 3); }
- |
- { n13 = new NodeSequence(2); }
- n15=<SIZEOF> { n14 = JTBToolkit.makeNodeToken(n15); }
- { n13.addNode(n14); }
- (
- (
- LOOKAHEAD(UnaryExpression())
- n17=UnaryExpression()
- { n16 = new NodeChoice(n17, 0); }
- |
- { n18 = new NodeSequence(3); }
- n20="(" { n19 = JTBToolkit.makeNodeToken(n20); }
- { n18.addNode(n19); }
- n21=TypeSpecifier()
- { n18.addNode(n21); }
- n23=")" { n22 = JTBToolkit.makeNodeToken(n23); }
- { n18.addNode(n22); }
- { n16 = new NodeChoice(n18, 1); }
- )
-
- )
- { n13.addNode(n16); }
- { n0 = new NodeChoice(n13, 4); }
- )
-
- )
-
- { return new UnaryExpression(n0); }
-}
-
-UnaryOperator UnaryOperator() :
-{
- NodeChoice n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
- NodeToken n5;
- Token n6;
- NodeToken n7;
- Token n8;
- NodeToken n9;
- Token n10;
- NodeToken n11;
- Token n12;
-
-
-}
-{
- (
- (
- n2="&" { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n4="*" { n3 = JTBToolkit.makeNodeToken(n4); }
- { n0 = new NodeChoice(n3, 1); }
- |
- n6="+" { n5 = JTBToolkit.makeNodeToken(n6); }
- { n0 = new NodeChoice(n5, 2); }
- |
- n8="-" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n0 = new NodeChoice(n7, 3); }
- |
- n10="~" { n9 = JTBToolkit.makeNodeToken(n10); }
- { n0 = new NodeChoice(n9, 4); }
- |
- n12="!" { n11 = JTBToolkit.makeNodeToken(n12); }
- { n0 = new NodeChoice(n11, 5); }
- )
-
- )
-
- { return new UnaryOperator(n0); }
-}
-
-PostfixExpression PostfixExpression() :
-{
- PrimaryExpression n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeChoice n2;
- NodeSequence n3;
- NodeToken n4;
- Token n5;
- Expression n6;
- NodeToken n7;
- Token n8;
- NodeSequence n9;
- NodeToken n10;
- Token n11;
- NodeOptional n12;
- ArgumentExpressionList n13;
- NodeToken n14;
- Token n15;
- NodeSequence n16;
- NodeToken n17;
- Token n18;
- NodeToken n19;
- Token n20;
- NodeSequence n21;
- NodeToken n22;
- Token n23;
- NodeToken n24;
- Token n25;
- NodeToken n26;
- Token n27;
- NodeToken n28;
- Token n29;
-
-
-}
-{
- n0=PrimaryExpression()
- (
- { n12 = new NodeOptional(); }
- (
- { n3 = new NodeSequence(3); }
- n5="[" { n4 = JTBToolkit.makeNodeToken(n5); }
- { n3.addNode(n4); }
- n6=Expression()
- { n3.addNode(n6); }
- n8="]" { n7 = JTBToolkit.makeNodeToken(n8); }
- { n3.addNode(n7); }
- { n2 = new NodeChoice(n3, 0); }
- |
- { n9 = new NodeSequence(3); }
- n11="(" { n10 = JTBToolkit.makeNodeToken(n11); }
- { n9.addNode(n10); }
- (
- LOOKAHEAD(ArgumentExpressionList())
- n13=ArgumentExpressionList()
- { n12.addNode(n13); }
- )?
- { n9.addNode(n12); }
- n15=")" { n14 = JTBToolkit.makeNodeToken(n15); }
- { n9.addNode(n14); }
- { n2 = new NodeChoice(n9, 1); }
- |
- { n16 = new NodeSequence(2); }
- n18="." { n17 = JTBToolkit.makeNodeToken(n18); }
- { n16.addNode(n17); }
- n20=<IDENTIFIER> { n19 = JTBToolkit.makeNodeToken(n20); }
- { n16.addNode(n19); }
- { n2 = new NodeChoice(n16, 2); }
- |
- { n21 = new NodeSequence(2); }
- n23="->" { n22 = JTBToolkit.makeNodeToken(n23); }
- { n21.addNode(n22); }
- n25=<IDENTIFIER> { n24 = JTBToolkit.makeNodeToken(n25); }
- { n21.addNode(n24); }
- { n2 = new NodeChoice(n21, 3); }
- |
- n27="++" { n26 = JTBToolkit.makeNodeToken(n27); }
- { n2 = new NodeChoice(n26, 4); }
- |
- n29="--" { n28 = JTBToolkit.makeNodeToken(n29); }
- { n2 = new NodeChoice(n28, 5); }
- )
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
-
- { return new PostfixExpression(n0,n1); }
-}
-
-PrimaryExpression PrimaryExpression() :
-{
- NodeChoice n0;
- NodeToken n1;
- Token n2;
- Constant n3;
- NodeSequence n4;
- NodeToken n5;
- Token n6;
- Expression n7;
- NodeToken n8;
- Token n9;
-
-
-}
-{
- (
- n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n3=Constant()
- { n0 = new NodeChoice(n3, 1); }
- |
- { n4 = new NodeSequence(3); }
- n6="(" { n5 = JTBToolkit.makeNodeToken(n6); }
- { n4.addNode(n5); }
- n7=Expression()
- { n4.addNode(n7); }
- n9=")" { n8 = JTBToolkit.makeNodeToken(n9); }
- { n4.addNode(n8); }
- { n0 = new NodeChoice(n4, 2); }
- )
-
- { return new PrimaryExpression(n0); }
-}
-
-ArgumentExpressionList ArgumentExpressionList() :
-{
- AssignmentOrTypeExpression n0;
- NodeListOptional n1 = new NodeListOptional();
- NodeSequence n2;
- NodeToken n3;
- Token n4;
- AssignmentOrTypeExpression n5;
-
-
-}
-{
- n0=AssignmentOrTypeExpression()
- (
- { n2 = new NodeSequence(2); }
- n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
- { n2.addNode(n3); }
- n5=AssignmentOrTypeExpression()
- { n2.addNode(n5); }
- { n1.addNode(n2); }
- )*
- { n1.nodes.trimToSize(); }
-
- { return new ArgumentExpressionList(n0,n1); }
-}
-
-AssignmentOrTypeExpression AssignmentOrTypeExpression() :
-{
- NodeChoice n0;
- NoIdentifierTypeSpecifier n1;
- AssignmentExpression n2;
-
-
-}
-{
- (
- n1=NoIdentifierTypeSpecifier()
- { n0 = new NodeChoice(n1, 0); }
- |
- n2=AssignmentExpression()
- { n0 = new NodeChoice(n2, 1); }
- )
-
- { return new AssignmentOrTypeExpression(n0); }
-}
-
-Constant Constant() :
-{
- NodeChoice n0;
- NodeToken n1;
- Token n2;
- NodeToken n3;
- Token n4;
- NodeToken n5;
- Token n6;
- NodeToken n7;
- Token n8;
-
-
-}
-{
- (
- n2=<INTEGER_LITERAL> { n1 = JTBToolkit.makeNodeToken(n2); }
- { n0 = new NodeChoice(n1, 0); }
- |
- n4=<FLOATING_POINT_LITERAL> { n3 = JTBToolkit.makeNodeToken(n4); }
- { n0 = new NodeChoice(n3, 1); }
- |
- n6=<CHARACTER_LITERAL> { n5 = JTBToolkit.makeNodeToken(n6); }
- { n0 = new NodeChoice(n5, 2); }
- |
- n8=<STRING_LITERAL> { n7 = JTBToolkit.makeNodeToken(n8); }
- { n0 = new NodeChoice(n7, 3); }
- )
-
- { return new Constant(n0); }
-}