|
|
|
Re: how to define a Dummy Block in Grammar? [message #556707 is a reply to message #556679] |
Thu, 02 September 2010 12:13 |
No real name Messages: 16 Registered: September 2010 |
Junior Member |
|
|
Thank you very much for your answeres: I'm one step further now, but there are still some problems:
@Bodo: is it a special construct or just a pattern how you would do that?
Dummy:
forLoop=ForLoop
|
; is not a valid syntax
@Alexander
I could skip lots of stuff going this way before I came across the following, let's stick to my example:
Model:
loop=ForLoop;
ForLoop:
for1=FOR type=Type varname=ID ';' cond=Condition; incr=Increment
dummy=Dummy // dummy can contain another for-loop
end=END for2=FOR
END:
end='end';
FOR:
for='for';
Dummy: ForLoop| content=Anything;
Anything: (ID|INT|STRING|';');
now I can have something like:
for int i; i < 10; i++
if a > 3
end if
end for
where I do not have the "if"-construct yet - it should be covered by Dummy, but it is not valid to have 'end' between 'for' and 'end' 'for'
so I extended Anything to:
Anything: {Anything}(ID|INT|STRING|';'|end=END);
but then I get a warning:
the decision cannot distinguish between alternative(s) 1,2 for at least one input sequence
full warning:
0 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Registering platform uri 'C:\Users\bar\workspace'
627 [main] INFO ipse.emf.mwe.utils.DirectoryCleaner - Cleaning C:\Users\bar\workspace\org.xtext.example.mydsl\..\org.xtext. example.mydsl\src-gen
639 [main] INFO ipse.emf.mwe.utils.DirectoryCleaner - Cleaning C:\Users\bar\workspace\org.xtext.example.mydsl\..\org.xtext. example.mydsl.ui\src-gen
791 [main] INFO ipse.xtext.generator.LanguageConfig - generating infrastructure for org.xtext.example.mydsl.MyDsl with fragments : ImplicitRuntimeFragment, ImplicitUiFragment, GrammarAccessFragment, EcoreGeneratorFragment, ParseTreeConstructorFragment, ResourceFactoryFragment, XtextAntlrGeneratorFragment, JavaValidatorFragment, ImportNamespacesScopingFragment, QualifiedNamesFragment, BuilderIntegrationFragment, FormatterFragment, LabelProviderFragment, TransformerFragment, OutlineNodeAdapterFactoryFragment, QuickOutlineFragment, QuickfixProviderFragment, JavaBasedContentAssistFragment, XtextAntlrUiGeneratorFragment
warning(202): ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/p arser/antlr/internal/InternalMyDsl.g:707:1: the decision cannot distinguish between alternative(s) 1,2 for at least one input sequence
7650 [main] INFO or.validation.JavaValidatorFragment - executing generate for org.eclipse.xtext.generator.validation.JavaValidatorFragment
warning(202): ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/myds l/ui/contentassist/antlr/internal/InternalMyDsl.g:1098:32: the decision cannot distinguish between alternative(s) 1,2 for at least one input sequence
8910 [main] INFO .emf.mwe2.runtime.workflow.Workflow - Done.
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03368 seconds