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

From Eclipsepedia

Jump to: navigation, search
(Development Details and Core Information)
(Useful Links)
 
(28 intermediate revisions by one user not shown)
Line 1: Line 1:
== Generic Action Code Language (GACL) ==
+
== 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 .  
 
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 ==
+
== Development Details and Core Information ==
  
=== Features of GACL ===
+
=== Features of GACL ===
  
* Variable Declarations ( with optional initializers ) and Function Declaration .
+
*Variable Declarations ( with optional initializers ) and Function Declaration .  
* Comparison & arithmetic expressions .
+
*Comparison & arithmetic expressions .  
* Basic types , and user defined types .
+
*Basic types , and user defined types .  
* If-else blocks and ladders .
+
*If-else blocks and ladders .  
* For , while , for each , enhanched for each .
+
*For , while , for each , enhanched for each .  
* Support for iterators (that can be used by for each loops ) .
+
*Support for iterators (that can be used by for each loops ) .  
* Function Calls with arguments & diff types i.e. ref/value/address .
+
*Function Calls with arguments & diff types i.e. ref/value/address .  
* type checking and as much as possible implicit type casting .
+
*type checking and as much as possible implicit type casting .  
* Casts corresponding to static casts in C .
+
*Casts corresponding to static casts in C .
  
== Project Proposal ==
+
=== Thoughts on Syntax & Grammar ===
  
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/hckkid/1 Click Here] to see the project proposal at gsoc's website .
+
Although syntax for GACL is still being designed but here are few thought regarding syntax .  
  
[https://github.com/hckkid/my-eTrice-work/blob/master/Proposal.txt Click Here] to see the project proposal in my github repository .
+
==== TypeDeclaration  ====
  
== Useful Links ==
+
===== Syntax =====
* [http://www.eclipse.org/etrice/documentation/doc/etrice.html eTrice Documentation Page]
+
 
* [http://www.eclipse.org/Xtext/ Xtext Home Page]
+
  type prt type xyz int
* [http://www.eclipse.org/etrice/ eTrice Home Page]
+
  type pqr { int Hello , char ch , prt p , op f1:int() , op f2:char(char,char) }    type pqr' {pqr e1}
* [http://github.com/hckkid My Github profile page]
+
  prt {pqr p};
* [http://www.eclipse.org/forums/eclipse.etrice eTrice Forums page]
+
 
 +
===== 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+0.5
 +
 
 +
===== Action =====
 +
 
 +
*Declares a variable x of type int , declaration ended with newline .
 +
*Declares a variable y , declaration ended with semicolon .
 +
*Instantiate a variable y with value of 2 (2 as expression) (Value of 2 would be type checked and its type would be assigned to y unless and until there exists another assignment of y with type which can be type casted into type of value) instantiation ended with "\t"
 +
*Instantiate a variable x with value of expression y which is currently 2 .
 +
*Assigns variable x with value of expression x+4 which would be solved and accordingly value of x would be assigned
 +
*Assigns variable y with value of expression x+0.5 which would be solved and accordingly value of y would be assigned (In this case type of y would be changed actually while writing it would be statically analyzed whether we need to type cast y and is it possible to type cast ) .
 +
 
 +
===== Grammar =====
 +
 
 +
  [ [[ETrice/GSoC/2012/GACL#Type_Declaration|type]] ] varname [ "=" { varname2 | [[ETrice/GSoC/2012/GACL#Expression|Expression]] } ] { ";" | "\n" | "\t" | " "}
 +
 
 +
==== Expression  ====
 +
 
 +
===== Syntax =====
 +
 
 +
  x+4
 +
  y==z
 +
 
 +
===== Action =====
 +
 
 +
*First One is an example of arithmetic expression and would have same action as it have for an arithmetic expression .
 +
*Second One is an example of Logical expression and it would have same action as it have for a logical expression .
 +
 
 +
===== Grammar =====
 +
 
 +
  { [[ETrice/GSoC/2012/GACL#ArithmeticExpression|ArithmeticExpression]] | [[ETrice/GSoC/2012/GACL#LogicalExpression|LogicalExpression]] }
 +
 
 +
==== ArithmeticExpression  ====
 +
 
 +
===== Syntax =====
 +
 
 +
  { [[ETrice/GSoC/2012/GACL#Expression|Expression]] { "+" | "-" | "*" | "/" | "**" | "^" | "%" | "div" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
 +
| {[[ETrice/GSoC/2012/GACL#Expression|Expression]] { "++" | "--" } } | { { "++" | "--" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
 +
 
 +
==== LogicalExpression  ====
 +
 
 +
===== Syntax =====
 +
 
 +
===== Action =====
 +
 
 +
===== Grammar =====
 +
 
 +
  { [[ETrice/GSoC/2012/GACL#Expression|Expression]] { "<" | "<=" | "==" | ">" | ">=" | "|" | "||" | "&" | "&&" | "^" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
 +
 
 +
==== Statement  ====
 +
 
 +
===== Syntax =====
 +
 
 +
===== Action =====
 +
 
 +
===== Grammar =====
 +
 
 +
  { [[ETrice/GSoC/2012/GACL#TypeDeclaration|TypeDeclaration]] | [[ETrice/GSoC/2012/GACL#VariableDeclaration|VariableDeclaration]] | [[ETrice/GSoC/2012/GACL#Expression|Expression]] }
 +
 
 +
==== StatementList  ====
 +
 
 +
===== Syntax =====
 +
 
 +
===== Action =====
 +
 
 +
===== Grammar =====
 +
 
 +
  { [[ETrice/GSoC/2012/GACL#Empty|Empty]] | [[ETrice/GSoC/2012/GACL#Statement|Statement]] { { "\n" | "\t" | " "}* } [[ETrice/GSoC/2012/GACL#Statementlist|Statementlist]] }
 +
 
 +
==== Program  ====
 +
 
 +
===== Syntax =====
 +
 
 +
===== Action =====
 +
 
 +
===== Grammar =====
 +
 
 +
  { [[ETrice/GSoC/2012/GACL#Statementlist| Statementlist]] }
 +
 
 +
<br>
 +
 
 +
== 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  ==
 +
 
 +
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/hckkid/1 Click Here] to see the project proposal at gsoc's website .
 +
 
 +
[https://github.com/hckkid/my-eTrice-work/blob/master/Proposal.txt Click Here] to see the project proposal in my github repository .
 +
 
 +
== Useful Links ==
 +
 
 +
*[http://www.eclipse.org/etrice/documentation/doc/etrice.html eTrice Documentation Page]  
 +
*[http://www.eclipse.org/Xtext/ Xtext Home Page]  
 +
*[http://www.eclipse.org/etrice/ eTrice Home Page]  
 +
*[http://github.com/hckkid My Github profile page]  
 +
*[http://www.eclipse.org/forums/eclipse.etrice eTrice Forums page]
 +
 
 +
[[Category:eTrice]]

Latest revision as of 05:41, 20 April 2013

Contents

[edit] 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 .

[edit] Development Details and Core Information

[edit] 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 .

[edit] Thoughts on Syntax & Grammar

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

[edit] TypeDeclaration

[edit] 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};
[edit] 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
[edit] Grammar
 { "type" typename [ existingtype | "{" TypeCode "}" ] [";" | "\n" | "\t" | " "] } | {typename typecode}

[edit] VariableDeclaration

[edit] Syntax
 int x
 y;
 y=2    x=y
 x=x+4 y=y+0.5
[edit] Action
  • Declares a variable x of type int , declaration ended with newline .
  • Declares a variable y , declaration ended with semicolon .
  • Instantiate a variable y with value of 2 (2 as expression) (Value of 2 would be type checked and its type would be assigned to y unless and until there exists another assignment of y with type which can be type casted into type of value) instantiation ended with "\t"
  • Instantiate a variable x with value of expression y which is currently 2 .
  • Assigns variable x with value of expression x+4 which would be solved and accordingly value of x would be assigned
  • Assigns variable y with value of expression x+0.5 which would be solved and accordingly value of y would be assigned (In this case type of y would be changed actually while writing it would be statically analyzed whether we need to type cast y and is it possible to type cast ) .
[edit] Grammar
 [ type ] varname [ "=" { varname2 | Expression } ] { ";" | "\n" | "\t" | " "}

[edit] Expression

[edit] Syntax
 x+4
 y==z
[edit] Action
  • First One is an example of arithmetic expression and would have same action as it have for an arithmetic expression .
  • Second One is an example of Logical expression and it would have same action as it have for a logical expression .
[edit] Grammar
 { ArithmeticExpression | LogicalExpression }

[edit] ArithmeticExpression

[edit] Syntax
 { Expression { "+" | "-" | "*" | "/" | "**" | "^" | "%" | "div" } Expression } 
| {Expression { "++" | "--" } } | { { "++" | "--" } Expression }

[edit] LogicalExpression

[edit] Syntax
[edit] Action
[edit] Grammar
 { Expression { "<" | "<=" | "==" | ">" | ">=" | "|" | "||" | "&" | "&&" | "^" } Expression }

[edit] Statement

[edit] Syntax
[edit] Action
[edit] Grammar
 { TypeDeclaration | VariableDeclaration | Expression }

[edit] StatementList

[edit] Syntax
[edit] Action
[edit] Grammar
 { Empty | Statement { { "\n" | "\t" | " "}* } Statementlist }

[edit] Program

[edit] Syntax
[edit] Action
[edit] Grammar
 {  Statementlist }


[edit] 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 .

[edit] Project Proposal

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

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

[edit] Useful Links