save
[cdsspec-compiler.git] / grammer / spec_compiler.jj
index 8e2477d039a52e8a20b9a3d6f39ff9c751996413..22fada84bf025aaee801daa7da9d01569a3f9729 100644 (file)
@@ -20,6 +20,7 @@
                @InitVar:
                @DefineFunc:
                ...
+               @DefineFunc:
        @Interface_cluster:
                ...
        @Happens-before:
@@ -747,6 +748,7 @@ GlobalConstruct Global_construct() :
 SequentialDefineSubConstruct Global_define() :
 {
        ArrayList<String> initVar, defineFunc, code;
+       ArrayList<ArrayList<String>> defineFuncs;
        ArrayList<VariableDeclaration> declareVars;
        VariableDeclaration declareVar;
 
@@ -755,16 +757,16 @@ SequentialDefineSubConstruct Global_define() :
        {
                declareVars = null;
                initVar = null;
-               defineFunc = null;
+               defineFuncs = new ArrayList<ArrayList<String>>();
        }
        <GLOBAL_DEFINE>
                (<DECLARE_VAR> ((declareVar = TypeParam() ";" {
                        declareVars.add(declareVar); } )*))?
        (<INIT_VAR> (code = C_CPP_CODE(null) { initVar = code; } ))?
-       (<DEFINE_FUNC> (code = C_CPP_CODE(null) { defineFunc = code; }))?
+       (<DEFINE_FUNC> (defineFunc = C_CPP_CODE(null) { defineFuncs.add(defineFunc); }))*
        {
                SequentialDefineSubConstruct res = new
-                       SequentialDefineSubConstruct(declareVars, initVar, defineFunc);
+                       SequentialDefineSubConstruct(declareVars, initVar, defineFuncs);
                //System.out.println(res);
                return res;
        }