Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "ETrice/GSoC/2012/GACL"
Line 21: | Line 21: | ||
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 . | ||
− | === Empty === | + | The Grammar follows as below |
+ | |||
+ | ==== Empty ==== | ||
{} | {} | ||
− | === Type Declaration === | + | ==== Type Declaration ==== |
"type" typename [ existingtype | "{" TypeCode "}"] | "type" typename [ existingtype | "{" TypeCode "}"] | ||
− | === VariableDeclaration === | + | ==== VariableDeclaration ==== |
[ [[ETrice/GSoC/2012/GACL#Type_Declaration|type]] ] varname [ "=" { varname2 | [[ETrice/GSoC/2012/GACL#Expression|Expression]] } ] { ";" | "\n" } | [ [[ETrice/GSoC/2012/GACL#Type_Declaration|type]] ] varname [ "=" { varname2 | [[ETrice/GSoC/2012/GACL#Expression|Expression]] } ] { ";" | "\n" } | ||
− | === Expression === | + | ==== Expression ==== |
{ [[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 ===== |
{ [[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]] } | ||
| {[[ETrice/GSoC/2012/GACL#Expression|Expression]] { "++" | "--" } } | { { "++" | "--" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] } | | {[[ETrice/GSoC/2012/GACL#Expression|Expression]] { "++" | "--" } } | { { "++" | "--" } [[ETrice/GSoC/2012/GACL#Expression|Expression]] } | ||
− | ==== LogicalExpression ==== | + | ===== LogicalExpression ===== |
{ [[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 ==== |
{ [[ETrice/GSoC/2012/GACL#Expression|Expression]] | [[ETrice/GSoC/2012/GACL#Expression|Expression]] } | { [[ETrice/GSoC/2012/GACL#Expression|Expression]] | [[ETrice/GSoC/2012/GACL#Expression|Expression]] } | ||
− | === StatementList === | + | ==== StatementList ==== |
{ [[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 ==== |
− | { [[ETrice/GSoC/2012/GACL#Statementlist | Statementlist]] } | + | { [[ETrice/GSoC/2012/GACL#Statementlist| Statementlist]] } |
<br> | <br> |
Revision as of 11:38, 31 March 2012
Contents
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
Although syntax for GACL is still being designed but here are few thought regarding syntax .
The Grammar follows as below
Empty
{}
Type Declaration
"type" typename [ existingtype | "{" TypeCode "}"]
VariableDeclaration
[ type ] varname [ "=" { varname2 | Expression } ] { ";" | "\n" }
Expression
{ ArithmeticExpression | LogicalExpression }
ArithmeticExpression
{ Expression { "+" | "-" | "*" | "/" | "**" | "^" | "%" | "div" } Expression } | {Expression { "++" | "--" } } | { { "++" | "--" } Expression }
LogicalExpression
{ Expression { "<" | "<=" | "==" | ">" | ">=" | "|" | "||" | "&" | "&&" | "^" } Expression }
Statement
{ Expression | Expression }
StatementList
{ Empty | Statement Statementlist }
Program
{ 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 .