summaryrefslogtreecommitdiff
path: root/chapter14/docs/14-grammar.md
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-09-12 11:13:31 -0700
committerCliff Click <cliffc@acm.org>2024-10-06 08:56:22 -0700
commit1b5c0f43171820812f09b71fa0512c0025d2d187 (patch)
tree9aee1e2a21fb4aa49364429dff0d8462fdd49b2d /chapter14/docs/14-grammar.md
parentdfd218239bb17d9d0988ac153b35bb5ad3f450e7 (diff)
downloadSimple-1b5c0f43171820812f09b71fa0512c0025d2d187.tar.gz
Simple-1b5c0f43171820812f09b71fa0512c0025d2d187.zip
Ch15 initial push
Diffstat (limited to 'chapter14/docs/14-grammar.md')
-rw-r--r--chapter14/docs/14-grammar.md35
1 files changed, 29 insertions, 6 deletions
diff --git a/chapter14/docs/14-grammar.md b/chapter14/docs/14-grammar.md
index 65611618..4534684d 100644
--- a/chapter14/docs/14-grammar.md
+++ b/chapter14/docs/14-grammar.md
@@ -1,4 +1,4 @@
-# Grammar for Chapter 13
+# Grammar for Chapter 14
```antlrv4
grammar SimpleLanguage;
@@ -20,8 +20,23 @@ statement
| metaStatement
;
+type
+ : 'int'
+ | 'i8'
+ | 'i16'
+ | 'i32'
+ | 'i64'
+ | 'u8'
+ | 'u16'
+ | 'u32'
+ | 'flt'
+ | 'f32'
+ | 'f64'
+ | 'bool'
+ ;
+
field
- : 'int' IDENTIFIER ';'
+ : type IDENTIFIER ';'
;
fields
@@ -66,7 +81,7 @@ structName
;
declStatement
- : 'int' IDENTIFIER '=' expression ';'
+ : type IDENTIFIER '=' expression ';'
| structName IDENTIFIER ('?')? '=' expression ';'
;
@@ -75,19 +90,27 @@ returnStatement
;
expression
- : comparisonExpression
+ : bitWiseExpression
;
+bitWiseExpression
+ : comparisonExpression ( '&' | '|' | '^' ) comparisonExpression)*
+ ;
+
comparisonExpression
- : additiveExpression (('==' | '!='| '>'| '<'| '>='| '<=') additiveExpression)*
+ : shiftExpression (('==' | '!='| '>'| '<'| '>='| '<=') shiftExpression)*
;
+shiftExpression
+ : additiveExpression ( '<<' | '>>>' | '>>' ) additiveExpression)*
+ ;
+
additiveExpression
: multiplicativeExpression (('+' | '-') multiplicativeExpression)*
;
multiplicativeExpression
- : unaryExpression (('*' | '/') unaryExpression)*
+ : unaryExpression (('*' | '|') unaryExpression)*
;
unaryExpression