summaryrefslogtreecommitdiff
path: root/src/colm.lm
diff options
context:
space:
mode:
Diffstat (limited to 'src/colm.lm')
-rw-r--r--src/colm.lm38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/colm.lm b/src/colm.lm
index c95d0c41..16a9eeb5 100644
--- a/src/colm.lm
+++ b/src/colm.lm
@@ -1,6 +1,7 @@
# Main region.
lex
token DEF / 'def' /
+ token REDEF / 'redef' /
token LEX / 'lex' /
token END / 'end' /
token TOKEN / 'token' /
@@ -108,13 +109,13 @@ lex
token STAR /'*'/
token QUESTION /'?'/
token EQUALS /'='/
- token EQEQ /'=='/
- token NEQ /'!='/
+ token EQ_EQ /'=='/
+ token BANG_EQ /'!='/
token COMMA /','/
token LT /'<'/
token GT /'>'/
- token LTEQ /'<='/
- token GTEQ /'>='/
+ token LT_EQ /'<='/
+ token GT_EQ /'>='/
token BANG /'!'/
token DOLLAR /'$'/
token CARET /'^'/
@@ -122,8 +123,9 @@ lex
token PERCENT /'%'/
token PLUS /'+'/
token MINUS /'-'/
- token AMPAMP /'&&'/
- token BARBAR /'||'/
+ token AMP_AMP /'&&'/
+ token BAR_BAR /'||'/
+ token DOT_DOT_DOT /'...'/
ignore / ( '\n' | '\t' | ' ' )+ /
ignore / '#' . ( ^'\n' )* . '\n' /
@@ -214,7 +216,8 @@ def root_item
| [token_def] :Token commit
| [ic_def] :IgnoreCollector commit
| [ignore_def] :Ignore commit
-| [cfl_def] :Cfl commit
+| [cfl_def] :CflDef commit
+| [cfl_redef] :CflRedef commit
| [region_def] :Region commit
| [struct_def] :Struct commit
| [namespace_def] :Namespace commit
@@ -441,6 +444,12 @@ def cfl_def
opt_reduce_first
prod_list]
+def cfl_redef
+ [REDEF id
+ VarDefList: var_def<*
+ opt_reduce_first
+ prod_list]
+
def region_def
[LEX RootItemList: root_item<* END]
@@ -501,7 +510,8 @@ def prod
[SQOPEN prod_el_list SQCLOSE
opt_prod_name
opt_commit
- opt_reduce]
+ opt_reduce] :Prod
+| [SQOPEN DOT_DOT_DOT SQCLOSE] :DotDotDot
def opt_reduce
[COPEN lang_stmt_list CCLOSE] :Reduce
@@ -601,17 +611,17 @@ def expr_stmt
[code_expr]
def code_expr
- [code_expr AMPAMP code_relational] :AmpAmp
-| [code_expr BARBAR code_relational] :BarBar
+ [code_expr AMP_AMP code_relational] :AmpAmp
+| [code_expr BAR_BAR code_relational] :BarBar
| [code_relational] :Base
def code_relational
- [code_relational EQEQ code_additive] :EqEq
-| [code_relational NEQ code_additive] :Neq
+ [code_relational EQ_EQ code_additive] :EqEq
+| [code_relational BANG_EQ code_additive] :Neq
| [code_relational LT code_additive] :Lt
| [code_relational GT code_additive] :Gt
-| [code_relational LTEQ code_additive] :LtEq
-| [code_relational GTEQ code_additive] :GtEq
+| [code_relational LT_EQ code_additive] :LtEq
+| [code_relational GT_EQ code_additive] :GtEq
| [code_additive] :Base
def code_additive