Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Please help me with my grammer(want to create a reference)
Please help me with my grammer [message #884844] Mon, 11 June 2012 23:53 Go to next message
Shafqat Ullah is currently offline Shafqat UllahFriend
Messages: 3
Registered: June 2012
Junior Member
Hi I want to have the following syntax

logic var1;
logic var2;

assign var1 = var2;

I have developed the following grapper for this...


(svm_moddule_stat+=module_statements)*
module_statements:
logic_t | assign_stat;

logic_t:
('const')? 'logic' ('unsigned' | 'signed')? ('wire')? (array_t*)? logic_name=ID (array_t*)? ';';

assign_stat:
'assign' (type1+=typeRef) '=' (type2+=typeRef) ';' ;

typeRef: reference = [logic_t];

array_t:
('[' INT ':' INT ']');

when i write

assign var1 = var2;

i get the error "could not resolve reference to logic_t var1" and "could not resolve reference to logic_t var2"
Re: Please help me with my grammer [message #884917 is a reply to message #884844] Tue, 12 June 2012 04:56 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14716
Registered: July 2009
Senior Member
Hi,


your logic_t needs (by convention) a (fully qualified) name not a logic_name . alternatively you can fix this using a IQualifiedNameProvider
that gives the logic_t its logic_name as fqn

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Please help me with my grammer [message #888228 is a reply to message #884917] Sun, 17 June 2012 22:09 Go to previous messageGo to next message
Shafqat Ullah is currently offline Shafqat UllahFriend
Messages: 3
Registered: June 2012
Junior Member
Thank you Christian for your reply, but i did not understand it, please help me, this time i have pasted my whole grammer.

the last line in my grammer is not working as indented.

I try to do something like this in my editor

logic var1;
logic var2;
assign var1 = var2;

but it shows the following errors
Couldn't resolve reference to data_types 'var1'.
Couldn't resolve reference to data_types 'var2'.





grammar org.xtext.example.SVLog with org.eclipse.xtext.common.Terminals

Model:
SystemVerilog+=Sv_File*;

Sv_File:
Module;
//---------------------------- System Verilog Module----------------------
Module:
('module' | 'macromodule') module_name=ID (('#' '('
(svm_param+=parameter ((',' svm_param+=parameter)*))
')')?
('(' (svm_port+=module_port (',' svm_port+=module_port)*)? ')')?) ';'
(svm_moddule_stat+=module_statements)* // inside module are
(assi+=assign)*
'endmodule';

parameter:
'parameter' (parameter_name=ID) ('=' parameter_val=INT)?;

//--------- module ports directions-----------------------------------------
module_input:
'input' input_name=ID;

module_output:
'output' output_name=ID;

module_inout:
'inout' inout_name=ID;

module_ref:
'ref' inout_name=ID;

module_port:
module_input | module_output | module_inout | module_ref;
//--------------------------------------------------------------------------

//----------module statements-----------------------------------------------
module_statements:
data_types;
// data types definations
data_types:
integer_types | vector_types | real_types | string_type | event_type |
pointer_type;

integer_types:
byte_t | shortint_t | int_t | longint_t | integer_t | time_t | localparam_t;

//integer datatypes
byte_t:
('const')? 'byte' byte_name=ID ';';

shortint_t:
('const')? 'shortint' ('unsigned' | 'signed')? (array_t*)? shortint_name=ID (array_t*)? ';';

int_t:
('const')? 'int' ('unsigned' | 'signed')? (array_t*)? int_name=ID (array_t*)? ';';

longint_t:
('const')? 'longint' ('unsigned' | 'signed')? (array_t*)? longint_name=ID (array_t*)? ';';

integer_t:
('const')? 'integer' ('unsigned' | 'signed')? (array_t*)? integer_name=ID (array_t*)? ';';

time_t:
('const')? 'time' (array_t*)? time_name=ID (array_t*)? ';';

localparam_t:
'localparam' localparam_name=ID ';';

// rela_types
real_types:
shortreal_t | real_t | realtime_t;

shortreal_t:
('const')? 'shortreal' ('unsigned' | 'signed')? (array_t*)? shortreal_name=ID (array_t*)? ';';

real_t:
('const')? 'real' ('unsigned' | 'signed')? (array_t*)? real_name=ID (array_t*)? ';';

realtime_t:
('const')? 'realtime' ('unsigned' | 'signed')? (array_t*)? realtime_name=ID (array_t*)? ';';

//string type
string_type:
('const')? 'string' (array_t*)? realtime_name=ID (array_t*)? ';';

//event types
event_type:
'event' event_name=ID ';';

pointer_type:
'chandle' localparam_name=ID ';';

//vector datatypes
vector_types:
logic_t | bit_t | reg_t | wire_t | string_t;

logic_t:
('const')? 'logic' ('unsigned' | 'signed')? ('wire')? (array_t*)? logic_name=ID (array_t*)? ';';

bit_t:
('const')? 'bit' ('unsigned' | 'signed')? ('wire')? (array_t*)? bit_name=ID (array_t*)? ';';

reg_t:
('const')? 'reg' ('unsigned' | 'signed')? (array_t*)? reg_name=ID (array_t*)? ';';

wire_t:
('const')? 'wire' (array_t*)? wire_name=ID (array_t*)? ';';

string_t:
'string' string_name=ID;

array_t:
('[' INT ':' INT ']');
//---------------------------------------------------------------------------

typeRef:
reference=[data_types];

//----------Assign statement-------------------------------------------------
assign:
'assign' r1=typeRef '=' r2=typeRef ';';


//
//;

Re: Please help me with my grammer [message #888426 is a reply to message #888228] Mon, 18 June 2012 05:30 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14716
Registered: July 2009
Senior Member
Hi

logic_name=ID
bad

name=ID
good

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: Please help me with my grammer [message #889079 is a reply to message #888426] Mon, 18 June 2012 23:38 Go to previous messageGo to next message
Shafqat Ullah is currently offline Shafqat UllahFriend
Messages: 3
Registered: June 2012
Junior Member
thanks it worked. But don't know why logic_name=ID is bad ?
Re: Please help me with my grammer [message #889300 is a reply to message #889079] Tue, 19 June 2012 05:24 Go to previous message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14716
Registered: July 2009
Senior Member
Hi,

as i said: Xtext uses the Attribute "name" by default for cross references. thus you have to change the grammar
or customize the IQualifiedNameProvider that calculates the (FullyQualified)Name

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Previous Topic:IQualifiedNameProvider: using referenced objects to calculate elements name?!
Next Topic:Xtext 2.3: QualifiedNameProvider
Goto Forum:
  


Current Time: Thu Sep 26 08:37:30 GMT 2024

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

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

Back to the top