| Method createSequence is exceeding the 65535 bytes limit [message #1564072] |
Wed, 14 January 2015 10:36  |
Eclipse User |
|
|
|
Hi guys,
I am writing a grammar to support a in-house internal language but after adding some rules I got this error:
"The code of method createSequence(EObject, EObject) is exceeding the 65535 bytes limit"
I did some google and it seems that I need to turn on some options for the ANTLR Parser in order to split the code but neither of the following options works.
options = {
classSplitting=true
fieldsPerClass="200"
methodsPerClass="100"
}
I tried adding these options under XtextAntlrGeneratorFragment and XtextAntlrUiGeneratorFragment. I am using the latest version of Xtext 2.7.3
Do you have any clue about this?
|
|
|
|
|
|
|
|
|
|
| Re: Method createSequence is exceeding the 65535 bytes limit [message #1564183 is a reply to message #1564151] |
Wed, 14 January 2015 11:58   |
Eclipse User |
|
|
|
I am not using any unordered groups I only used alternatives.
The problem is if I remove some rules the grammar runs ok without any issue so I cannot extract a minimal example because the issue appears when I have several rules.
I enclose the recursive call between rules maybe that helps. If I uncomment any of the action that I have in Postfix rule I got the error
/*
* Expressions
*/
Expression:
SingleObject | LambdaExpression;
LambdaExpression returns Expression:
OrExpression ((
{MapLambda.element=current} "map" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{WhereLambda.element=current} "where" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{ReduceLambda.element=current} "reduce" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{GroupByLambda.element=current} "groupBy" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{OrderByLambda.element=current} "orderBy" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{FindLambda.element=current} "find" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{ScanLambda.element=current} "scan" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{MatchLambda.element=current} "match" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression) |
{DistinctByLambda.element=current} "distinctBy" (("(" "(" (parameters+=VariableDefintion ("," parameters+=VariableDefintion)*)? ")" "->" expression=OrExpression ")")? | expression=OrExpression)))*;
OrExpression returns Expression:
AndExpression (({Or.left=current} "or") right=AndExpression)*;
AndExpression returns Expression:
EqualityExpression (({And.left=current} "and") right=EqualityExpression)*;
EqualityExpression returns Expression:
IsExpression (({Equal.left=current} "==" | {NotEqual.left=current} "!=") right=IsExpression)*;
IsExpression returns Expression:
StringExpression (({Is.element=current} "is")
type = (
(":string"|":array"|":object"|":boolean"|":number"|":range"|":uri"|":datetime"|":localdatetime"|":date"|":localtime"|":time"|":timezone"|":period"|":null") |
(":empty"|":blank"|":even"|":odd"|":integer"|":decimal"|":leapYear")
)
(right=StringExpression)?
)*;
StringExpression returns Expression:
GreaterThanExpression (
(
{StartsWith.data=current} "startsWith" |
{EndsWith.data=current} "endsWith" |
{Matches.data=current} "matches" |
{Contains.data=current} "contains"
) filter=GreaterThanExpression)*;
GreaterThanExpression returns Expression:
LessThanExpression (({GreaterThan.left=current} ">" | {GreaterThanEqual.left=current} ">=") right=LessThanExpression)*;
LessThanExpression returns Expression:
AdditionSubtractionExpression (({LessThan.left=current} "<" | {LessThanEqual.left=current} "<=") right=AdditionSubtractionExpression)*;
AdditionSubtractionExpression returns Expression:
AppendExpression (({Plus.left=current} "+" | {Minus.left=current} "-") right=AppendExpression)*;
// TODO (ldebello) Review precedence
AppendExpression returns Expression:
RightLeftExpression (
(
{Append.data=current} "++" |
{Remove.data=current} "--"
) element=RightLeftExpression)*;
// TODO (ldebello) Review precedence
RightLeftExpression returns Expression:
MultiplicationDivisionExpression (({RightShift.left=current} ">>" | {LeftShift.left=current} "<<") right=MultiplicationDivisionExpression)*;
MultiplicationDivisionExpression returns Expression:
SplitExpression (({Multiply.left=current} "*" | {Division.left=current} "/") right=SplitExpression)*;
// TODO (ldebello) Review precedence
SplitExpression returns Expression:
AsExpression (({Split.data=current} "split") separator=AsExpression)*;
AsExpression returns Expression:
DefaultValueExpression (({As.element=current} "as")
type = (":string"|":array"|":object"|":boolean"|":number"|":range"|":uri"|":datetime"|":localdatetime"|":date"|":localtime"|":time"|":timezone"|":period"|":null")
(=>right=DefaultValueExpression)?
)*;
DefaultValueExpression returns Expression:
Prefixed (({DefaultValue.data=current} "default") default=Prefixed)?;
Prefixed returns Expression:
{UnaryMinus} "-" expression=Postfix |
{Negated} "not" expression=Postfix |
{SizeOf} "sizeOf" expression=Postfix |
{Trim} "trim" expression=Postfix |
{Upper} "upper" expression=Postfix |
{Lower} "lower" expression=Postfix |
Postfix;
Postfix returns Expression:
Atomic (
// Dot Selectors
=>({AttributeSelector.data=current} "..@" (attributeName=StringLiteral)?)+ |
=>({MetadataSelector.data=current} "..^" (attributeName=StringLiteral)?)+ |
// =>({StarSelector.data=current} "..*" attributeName=StringLiteral)+ |
// =>({DescendantsSelector.data=current} ".." attributeName=StringLiteral)+ |
// =>({DotSelector.data=current} "." attributeName=StringLiteral)+ |
// Bracket Selectors
// =>({AttributeSelector.data=current} "[@" (attributeName=StringLiteral)? "]")+ |
// =>({MetadataSelector.data=current} "[^" (attributeName=StringLiteral)? "]")+ |
// =>({StarSelector.data=current} "[*" attributeName=StringLiteral "]")+ |
=>({IndexSelector.data=current} "[" selector=SignedInteger "]")+ |
=>({RangeSelector.data=current} selector=Range)+
// =>({DynamicSelector.data=current} "[" "(" expression=Expression ")" "]")+ |
// =>({FilterSelector.data=current} "[" "?" "(" expression=LambdaExpression ")" "]")+
)* (
{KeyExistsModifier.data=current} "?" |
{NullUnsafeModifier.data=current} "!"
)?;
Atomic returns Expression:
Literal | Variable | Object | Range | Array| VariableAssigment | "(" Expression ")";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.06079 seconds