Skip to content

Commit

Permalink
exponentional operator support
Browse files Browse the repository at this point in the history
  • Loading branch information
lenaRB committed Aug 31, 2023
1 parent 5bf6402 commit 45a2b51
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ testSuiteGenerated/

# ignore user related gradle.properties
gradle.properties

# ignore generated antlr files
src/main/antlr/grammar/.antlr/
4 changes: 2 additions & 2 deletions src/main/antlr/grammar/crml.g4
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ tick : 'tick';

if_exp : 'if' if_e=exp 'then' then_e=exp ('else' else_e=exp);

constructor : 'new' type exp?;
constructor : 'new' type exp;

user_operator_call : (user_keyword exp)+;

Expand All @@ -96,7 +96,7 @@ op : builtin_op | user_keyword

builtin_op : 'and' | '*' | '+' | '-' | '/' | 'with' | 'master' | 'on' | 'filter'
| '<=' | '<' | '>=' | '>' | '<>' | 'par' | '==' |
'pre' | 'not'| '-' | 'card' | 'and' | 'or' |
'pre' | 'not'| '-' | 'card' | 'and' | 'or' | '^' |
'start' | 'end' | 'mod' |
'exp' | 'log' | 'log10' |
'cos' |'acos' | 'sin' | 'asin' ;
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/crml/translator/OperatorMapping.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ public static HashMap<String, List<Signature>> get_operator_map (){

// String signatures
List<String> string2 = Arrays.asList("String", "String");

// string + int/real mix and match
List<String> stringint = Arrays.asList("String", "Integer");
List<String> intstring = Arrays.asList("Integer", "String");
List<String> stringreal = Arrays.asList("String", "Real");
List<String> realstring = Arrays.asList("Real", "String");

// Period mix and match signatures
List<String> periodReal = Arrays.asList("Period", "Real");
Expand All @@ -59,6 +65,10 @@ public static HashMap<String, List<Signature>> get_operator_map (){
new Signature("+", real2, "Real", Type.OPERATOR),
new Signature(" ", real1, "Real", Type.OPERATOR),
new Signature("+", string2, "String", Type.OPERATOR),
new Signature("+", stringint, "String", Type.OPERATOR),
new Signature("+", intstring, "String", Type.OPERATOR),
new Signature("+", stringreal, "String", Type.OPERATOR),
new Signature("+", realstring, "String", Type.OPERATOR),
new Signature("CRMLtoModelica.Functions.add4", bool2, params, "Boolean", Type.FUNCTION));


Expand Down Expand Up @@ -92,6 +102,12 @@ public static HashMap<String, List<Signature>> get_operator_map (){

built_in_operators.put("/", div_sigs);

// ^ operators
List<Signature> expo_sigs =
Arrays.asList(new Signature("^", int2, "Integer", Type.OPERATOR),
new Signature("^", realint, "Real", Type.OPERATOR));
built_in_operators.put("^", expo_sigs);

// <= operators
List<Signature> leq_sigs =
Arrays.asList(new Signature("<=", int2, "Boolean", Type.OPERATOR),
Expand Down

0 comments on commit 45a2b51

Please sign in to comment.