Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Lining up arguments vertically(is it possible to line up arguments vertically in formatter)
Lining up arguments vertically [message #1702470] Wed, 22 July 2015 14:21 Go to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
Hi,

In my dsl i want that '|' is aligned vertically. But in the grammar an Identifier is coming before '|' and length of identifier is not fixed. I want that in pretty formatting all the '|' should be aligned vertically. not like this:
writeon |  --> dpr_writeon_p1;
pass |   --> lpr_pass_p2;
penalty |    --> d1_penalty_apb_slv_i1;
bdata [16] |     --> d2_bdata[16];
opdata [1080] |    --> d1_opdata[1080];

but something like this:
writeon                            |                          --> dpr_writeon_p1;
pass                               |                          --> lpr_pass_p2;
penalty                            |                          --> d1_penalty_apb_slv_i1;
bdata [16]                         |                          --> d2_bdata[16];
opdata [1080]                      |                          --> d1_opdata[1080];


In MyDslFormatter.xtend, what I am doing is:

for(Keyword p : g.findKeywords('|'){
			c.setSpace(' \t\t').around(p)
		}


but if the difference in the length of identifiers is greater than 3 this approach is not working.
I guess this is because tab indent only 4 units.
what should I do?
or is there any way that I can fix the position of '|'?
Re: Lining up arguments vertically [message #1702472 is a reply to message #1702470] Wed, 22 July 2015 14:29 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Hi,

have a look at http://de.slideshare.net/meysholdt/xtexts-new-formatter-api slide 139


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702601 is a reply to message #1702472] Thu, 23 July 2015 13:21 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
thank you Christian but i dont have latest xtext 2.8.
I have older version of xtext Sad
Re: Lining up arguments vertically [message #1702604 is a reply to message #1702601] Thu, 23 July 2015 13:29 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
then i have no idea on that

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702684 is a reply to message #1702470] Fri, 24 July 2015 06:49 Go to previous messageGo to next message
Karsten Thoms is currently offline Karsten ThomsFriend
Messages: 762
Registered: July 2009
Location: Dortmund, Germany
Senior Member

This is only possible with the new Formatter API.

Need professional support for Xtext, EMF, Eclipse IDE?
Go to: http://devhub.karakun.com
Twitter : @kthoms
Blog : www.karsten-thoms.de
Re: Lining up arguments vertically [message #1702729 is a reply to message #1702684] Fri, 24 July 2015 11:24 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
Hi, Now I have xtext 2,8, as per the link given by Christian, when I try to write the code in mydslFormatter.xtend, AbstractFormatter2 is not accessible. It gives the following error Quote:
Discouraged access: The type AbstractFormatter2 is not accessible due to restriction on required project org.xtext.aps
where Quote:
org.xtext.aps
is my project name

I haven't applied any restrictions on my project. could you please guide me a lil bit.
thanks
Re: Lining up arguments vertically [message #1702747 is a reply to message #1702729] Fri, 24 July 2015 12:39 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
simly ignore this restrictions. they simply state that the api may Change.

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702748 is a reply to message #1702747] Fri, 24 July 2015 12:40 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
(p.s: replacing the formatterfragment in the wf with formatter2fragment you give you a formatter class where you can start to implement

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702750 is a reply to message #1702748] Fri, 24 July 2015 13:05 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
actually when i replace
// formatter API
 fragment = formatting.FormatterFragment auto-inject {}

with
// formatter API
fragment = formatting2.Formatter2Fragment auto-inject {}

in GenerateMyDsl.mwe2 and run mwe2 workflow, it does not generate any new formatter class.(the old MyDslFormatter.xtend is created which is extending AbstractDeclarativeFormatter) and throw the following errors
9003 [main] INFO  text.generator.junit.Junit4Fragment  - generating Junit4 Test support classes
9017 [main] INFO  text.generator.junit.Junit4Fragment  - generating Compare Framework infrastructure
9021 [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher  - Problems running workflow org.example.aps.GenerateMyDsl: 
[ERROR]: GeneratorException: (Element: -UNKNOWN-; Reported by: Generator)
	 java.lang.RuntimeException: No GenPackage for NsURI http://www.eclipse.org/emf/2002/Ecore.
	at org.eclipse.xtext.generator.GenModelAccess.getGenPackage(GenModelAccess.java:98)
	at org.eclipse.xtext.generator.GenModelAccess.getGenClassifier(GenModelAccess.java:42)
	at org.eclipse.xtext.generator.GenModelAccess.getGenClass(GenModelAccess.java:38)
	at org.eclipse.xtext.generator.serializer.JavaEMFFile.importedGenTypeName(JavaEMFFile.java:83)
	at org.eclipse.xtext.generator.formatting2.FormatterStubGenerator.generateFormatMethod(FormatterStubGenerator.java:262)
	at org.eclipse.xtext.generator.formatting2.FormatterStubGenerator.generateStubFileContents(FormatterStubGenerator.java:218)
	at org.eclipse.xtext.generator.formatting2.Formatter2Fragment.generate(Formatter2Fragment.java:86)
	at org.eclipse.xtext.generator.Xtend2GeneratorFragment.generate(Xtend2GeneratorFragment.java:75)
	at org.eclipse.xtext.generator.Xtend2GeneratorFragment.generate(Xtend2GeneratorFragment.java:68)
	at org.eclipse.xtext.generator.DefaultGeneratorFragment.generate(DefaultGeneratorFragment.java:167)
	at org.eclipse.xtext.generator.CompositeGeneratorFragment.generate(CompositeGeneratorFragment.java:163)
	at org.eclipse.xtext.generator.Generator.generate(Generator.java:555)
	at org.eclipse.xtext.generator.Generator.invokeInternal(Generator.java:172)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:102)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:62)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)

java.lang.RuntimeException: Problems running workflow org.example.aps.GenerateMyDsl: 
[ERROR]: GeneratorException: (Element: -UNKNOWN-; Reported by: Generator)
	 java.lang.RuntimeException: No GenPackage for NsURI http://www.eclipse.org/emf/2002/Ecore.
	at org.eclipse.xtext.generator.GenModelAccess.getGenPackage(GenModelAccess.java:98)
	at org.eclipse.xtext.generator.GenModelAccess.getGenClassifier(GenModelAccess.java:42)
	at org.eclipse.xtext.generator.GenModelAccess.getGenClass(GenModelAccess.java:38)
	at org.eclipse.xtext.generator.serializer.JavaEMFFile.importedGenTypeName(JavaEMFFile.java:83)
	at org.eclipse.xtext.generator.formatting2.FormatterStubGenerator.generateFormatMethod(FormatterStubGenerator.java:262)
	at org.eclipse.xtext.generator.formatting2.FormatterStubGenerator.generateStubFileContents(FormatterStubGenerator.java:218)
	at org.eclipse.xtext.generator.formatting2.Formatter2Fragment.generate(Formatter2Fragment.java:86)
	at org.eclipse.xtext.generator.Xtend2GeneratorFragment.generate(Xtend2GeneratorFragment.java:75)
	at org.eclipse.xtext.generator.Xtend2GeneratorFragment.generate(Xtend2GeneratorFragment.java:68)
	at org.eclipse.xtext.generator.DefaultGeneratorFragment.generate(DefaultGeneratorFragment.java:167)
	at org.eclipse.xtext.generator.CompositeGeneratorFragment.generate(CompositeGeneratorFragment.java:163)
	at org.eclipse.xtext.generator.Generator.generate(Generator.java:555)
	at org.eclipse.xtext.generator.Generator.invokeInternal(Generator.java:172)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:102)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:62)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)

	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:104)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:62)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
Caused by: java.lang.RuntimeException: 
[ERROR]: GeneratorException: (Element: -UNKNOWN-; Reported by: Generator)
	 java.lang.RuntimeException: No GenPackage for NsURI http://www.eclipse.org/emf/2002/Ecore.
	at org.eclipse.xtext.generator.GenModelAccess.getGenPackage(GenModelAccess.java:98)
	at org.eclipse.xtext.generator.GenModelAccess.getGenClassifier(GenModelAccess.java:42)
	at org.eclipse.xtext.generator.GenModelAccess.getGenClass(GenModelAccess.java:38)
	at org.eclipse.xtext.generator.serializer.JavaEMFFile.importedGenTypeName(JavaEMFFile.java:83)
	at org.eclipse.xtext.generator.formatting2.FormatterStubGenerator.generateFormatMethod(FormatterStubGenerator.java:262)
	at org.eclipse.xtext.generator.formatting2.FormatterStubGenerator.generateStubFileContents(FormatterStubGenerator.java:218)
	at org.eclipse.xtext.generator.formatting2.Formatter2Fragment.generate(Formatter2Fragment.java:86)
	at org.eclipse.xtext.generator.Xtend2GeneratorFragment.generate(Xtend2GeneratorFragment.java:75)
	at org.eclipse.xtext.generator.Xtend2GeneratorFragment.generate(Xtend2GeneratorFragment.java:68)
	at org.eclipse.xtext.generator.DefaultGeneratorFragment.generate(DefaultGeneratorFragment.java:167)
	at org.eclipse.xtext.generator.CompositeGeneratorFragment.generate(CompositeGeneratorFragment.java:163)
	at org.eclipse.xtext.generator.Generator.generate(Generator.java:555)
	at org.eclipse.xtext.generator.Generator.invokeInternal(Generator.java:172)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:102)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:62)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)

	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.handleIssues(Mwe2Bridge.java:56)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:48)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:102)
	... 4 more

Re: Lining up arguments vertically [message #1702754 is a reply to message #1702750] Fri, 24 July 2015 13:13 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Does this happen inanewly created project with your grammar as welll

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702755 is a reply to message #1702754] Fri, 24 July 2015 13:22 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
P.S. do you have any imports in your grammar and if yes how do they look like

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702758 is a reply to message #1702755] Fri, 24 July 2015 13:25 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
This is not happening in a new project(new project is working fine). I have tried in new project and both formatter and formatter2 based xtend classes are generated. Discourage access warning is there but no error.
Re: Lining up arguments vertically [message #1702759 is a reply to message #1702758] Fri, 24 July 2015 13:26 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
I have only one import in my grammar
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
Re: Lining up arguments vertically [message #1702760 is a reply to message #1702759] Fri, 24 July 2015 13:29 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Hmmm i actually cannot reproduce that. do you have a minimal grammar that reproduces the problem

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702763 is a reply to message #1702760] Fri, 24 July 2015 13:31 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
does this keep to happen if you regenerate the old project?

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702765 is a reply to message #1702763] Fri, 24 July 2015 13:46 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
here is the minimal grammar which works good with formatter but do not work with fomatter2
grammar org.xtext.Newproj with org.eclipse.xtext.common.Terminals

generate newproj "http://www.xtext.org/Newproj"
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
//Model:
//	greetings+=Greeting*;
//	
//Greeting:
//	'Hello' name=ID '!';

NetFile:
  ((content+=GlobalParameters)|
  (content+=LibraryStatement)|
  (content+=GlobalDeclaration) );
  
  GlobalParameters:
  ((name="$config_seprate_file" ) |
  (name="$write_ent_fea_sepreatly") ) ";"
;

GlobalDeclaration:
  (name="$previoussignal_name" ":" IDENTIFIER ";") |
  (name="default_signal_name" ":" IDENTIFIER ";") |
  (name="default_vector_type" ":" IDENTIFIER ";") 
;

LibraryStatement:
  "LIBRARY" name=IDENTIFIER ";" ("USE" (LIBRARY_NAME)*(IDENTIFIER) ";")*
;
terminal IDENTIFIER returns ecore::EString: ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
terminal LIBRARY_NAME:
	IDENTIFIER '.' ;


p.s this grammar is not making any sense because it is a small part of a big grammar.

[Updated on: Fri, 24 July 2015 13:47]

Report message to a moderator

Re: Lining up arguments vertically [message #1702770 is a reply to message #1702765] Fri, 24 July 2015 13:55 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
as a workaround add to the workflows standalonesetup

registerGeneratedEPackage = "org.eclipse.emf.ecore.EcorePackage"
registerGenModelFile = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"


this seems to be fixed in 2.8.4


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Lining up arguments vertically [message #1702774 is a reply to message #1702770] Fri, 24 July 2015 14:14 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
yes!!! thank you. now got a new formatting class extending formatter2. I am starting implementing it now.
thank you so much. Smile
Re: Lining up arguments vertically [message #1703110 is a reply to message #1702774] Tue, 28 July 2015 15:08 Go to previous messageGo to next message
Mohsin waqas is currently offline Mohsin waqasFriend
Messages: 33
Registered: June 2015
Member
overall new formatter working good. I just want to ask that
is it possible to do something like:
"whenever the keyword "|" occurre, it should be on the 50th position on the line"
Re: Lining up arguments vertically [message #1703117 is a reply to message #1703110] Tue, 28 July 2015 15:39 Go to previous message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
You should be able to calculate this as well

Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Previous Topic:global scope and importedURI
Next Topic:Simple question about the syntax tree
Goto Forum:
  


Current Time: Wed Apr 24 21:01:04 GMT 2024

Powered by FUDForum. Page generated in 0.04768 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top