diff options
| author | Cliff Click <cliffc@acm.org> | 2024-09-12 11:13:31 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2024-10-06 08:56:22 -0700 |
| commit | 1b5c0f43171820812f09b71fa0512c0025d2d187 (patch) | |
| tree | 9aee1e2a21fb4aa49364429dff0d8462fdd49b2d /chapter14/docs | |
| parent | dfd218239bb17d9d0988ac153b35bb5ad3f450e7 (diff) | |
| download | Simple-1b5c0f43171820812f09b71fa0512c0025d2d187.tar.gz Simple-1b5c0f43171820812f09b71fa0512c0025d2d187.zip | |
Ch15 initial push
Diffstat (limited to 'chapter14/docs')
| -rw-r--r-- | chapter14/docs/14-grammar.md | 35 |
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 |
