Jump to: navigation, search

Difference between revisions of "ETrice/GSoC/2012/GACL"

Line 17: Line 17:
 
*Casts corresponding to static casts in C .
 
*Casts corresponding to static casts in C .
  
=== Thoughts on Syntax ===
+
=== Thoughts on Syntax & Grammar ===
  
 
Although syntax for GACL is still being designed but here are few thought regarding syntax .  
 
Although syntax for GACL is still being designed but here are few thought regarding syntax .  
Line 27: Line 27:
 
==== TypeDeclaration  ====
 
==== TypeDeclaration  ====
  
Syntax to be used is :-
+
===== Syntax =====
  
 
   type prt type xyz int
 
   type prt type xyz int
Line 33: Line 33:
 
   prt {pqr p};
 
   prt {pqr p};
  
What the above code is intended to do is as following :-
+
===== Action =====
  
 
*Declares a type prt ended with whitespace  
 
*Declares a type prt ended with whitespace  
Line 41: Line 41:
 
*Creates prt declared already with p of type pqr abstracted in it ended with semicolon
 
*Creates prt declared already with p of type pqr abstracted in it ended with semicolon
  
Grammar to be used is :-
+
===== Grammar =====
  
 
   { "type" typename [ existingtype | "{" TypeCode "}" ] [";" | "\n" | "\t" | " "] } | {typename typecode}
 
   { "type" typename [ existingtype | "{" TypeCode "}" ] [";" | "\n" | "\t" | " "] } | {typename typecode}
Line 47: Line 47:
 
==== VariableDeclaration  ====
 
==== VariableDeclaration  ====
  
Syntax to be used is :-
+
===== Syntax =====
  
 
   int x
 
   int x
Line 59: Line 59:
  
 
==== Expression  ====
 
==== Expression  ====
 +
 +
===== Syntax =====
  
 
   { [[ETrice/GSoC/2012/GACL#ArithmeticExpression|ArithmeticExpression]] | [[ETrice/GSoC/2012/GACL#LogicalExpression|LogicalExpression]] }
 
   { [[ETrice/GSoC/2012/GACL#ArithmeticExpression|ArithmeticExpression]] | [[ETrice/GSoC/2012/GACL#LogicalExpression|LogicalExpression]] }
  
 
===== ArithmeticExpression  =====
 
===== ArithmeticExpression  =====
 +
 +
====== Syntax ======
  
 
   { [[ETrice/GSoC/2012/GACL#Expression|Expression]] { "+" | "-" | "*" | "/" | "**" | "^" | "%" | "div" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }  
 
   { [[ETrice/GSoC/2012/GACL#Expression|Expression]] { "+" | "-" | "*" | "/" | "**" | "^" | "%" | "div" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }  
Line 68: Line 72:
  
 
===== LogicalExpression  =====
 
===== LogicalExpression  =====
 +
 +
====== Syntax ======
  
 
   { [[ETrice/GSoC/2012/GACL#Expression|Expression]] { "<" | "<=" | "==" | ">" | ">=" | "|" | "||" | "&" | "&&" | "^" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
 
   { [[ETrice/GSoC/2012/GACL#Expression|Expression]] { "<" | "<=" | "==" | ">" | ">=" | "|" | "||" | "&" | "&&" | "^" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
  
 
==== Statement  ====
 
==== Statement  ====
 +
 +
===== Syntax =====
  
 
   { [[ETrice/GSoC/2012/GACL#TypeDeclaration|TypeDeclaration]] | [[ETrice/GSoC/2012/GACL#VariableDeclaration|VariableDeclaration]] | [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
 
   { [[ETrice/GSoC/2012/GACL#TypeDeclaration|TypeDeclaration]] | [[ETrice/GSoC/2012/GACL#VariableDeclaration|VariableDeclaration]] | [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
  
 
==== StatementList  ====
 
==== StatementList  ====
 +
 +
===== Syntax =====
  
 
   { [[ETrice/GSoC/2012/GACL#Empty|Empty]] | [[ETrice/GSoC/2012/GACL#Statement|Statement]] [[ETrice/GSoC/2012/GACL#Statementlist|Statementlist]] }
 
   { [[ETrice/GSoC/2012/GACL#Empty|Empty]] | [[ETrice/GSoC/2012/GACL#Statement|Statement]] [[ETrice/GSoC/2012/GACL#Statementlist|Statementlist]] }
  
 
==== Program  ====
 
==== Program  ====
 +
 +
===== Syntax =====
  
 
   { [[ETrice/GSoC/2012/GACL#Statementlist| Statementlist]] }
 
   { [[ETrice/GSoC/2012/GACL#Statementlist| Statementlist]] }

Revision as of 12:17, 31 March 2012

Generic Action Code Language (GACL)

GACL is the language to describe the Detail Code for execution of ROOM Models in eTrice plugin . GACL aims at dealing with all features commonly available in imperative languages , especially Java , C/C++ . It will act as complement of current version of eTrice which uses code written in target language stored in a string as execution code . GACL would make user able to write execution code independent of target language .

Development Details and Core Information

Features of GACL

  • Variable Declarations ( with optional initializers ) and Function Declaration .
  • Comparison & arithmetic expressions .
  • Basic types , and user defined types .
  • If-else blocks and ladders .
  • For , while , for each , enhanched for each .
  • Support for iterators (that can be used by for each loops ) .
  • Function Calls with arguments & diff types i.e. ref/value/address .
  • type checking and as much as possible implicit type casting .
  • Casts corresponding to static casts in C .

Thoughts on Syntax & Grammar

Although syntax for GACL is still being designed but here are few thought regarding syntax .

Empty

 {}

TypeDeclaration

Syntax
 type prt type xyz int
 type pqr { int Hello , char ch , prt p , op f1:int() , op f2:char(char,char) }    type pqr' {pqr e1}
 prt {pqr p};
Action
  • Declares a type prt ended with whitespace
  • Creates a type xyz same as int where type declaration ended with newline
  • Creates a type pqr representing a structure rather class with abstracted elements Hello of type int , ch of char , p of type prt and f1 and f2 of type op i.e. Operations . f1 and f2 can take use of their arguments and also other elements of pqr i.e. Hello and ch in this case and ended with a tab .
  • Creates a type pqr' with e1 of pqr abstracted in it ended with newline
  • Creates prt declared already with p of type pqr abstracted in it ended with semicolon
Grammar
 { "type" typename [ existingtype | "{" TypeCode "}" ] [";" | "\n" | "\t" | " "] } | {typename typecode}

VariableDeclaration

Syntax
 int x
 y;
 y=2    x=y
 x=x+4 y=y+5

Grammar to be used is :-

 [ type ] varname [ "=" { varname2 | Expression } ] { ";" | "\n" | "\t" | " "}

Expression

Syntax
 { ArithmeticExpression | LogicalExpression }
ArithmeticExpression
Syntax
 { Expression { "+" | "-" | "*" | "/" | "**" | "^" | "%" | "div" } Expression } 
| {Expression { "++" | "--" } } | { { "++" | "--" } Expression }
LogicalExpression
Syntax
 { Expression { "<" | "<=" | "==" | ">" | ">=" | "|" | "||" | "&" | "&&" | "^" } Expression }

Statement

Syntax
 { TypeDeclaration | VariableDeclaration | Expression }

StatementList

Syntax
 { Empty | Statement Statementlist }

Program

Syntax
 {  Statementlist }


Disambiguation

The syntax used to specify the grammar in brief is

  • Things written in double quotes ("") stand as string written in source .
  • Content inside braces ({}) represents required content .
  • Content inside square brackets ([]) represents optional content .
  • Everything rest is either terminal or non-terminals .
  • Empty and statement list need a more thought to be done . We would surely finally come up with a better solution .

Project Proposal

Click Here to see the project proposal at gsoc's website .

Click Here to see the project proposal in my github repository .

Useful Links