summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2011-03-24 04:24:52 +0000
committerAdrian Thurston <thurston@complang.org>2011-03-24 04:24:52 +0000
commit6b6229980be2b0034b49eb66f00d62325e781882 (patch)
tree027aa847a7bf785cd85bd6eca972df7ebb08da72
parent36a82b183881a0c587a98a53580a903d630881e3 (diff)
downloadcolm-6b6229980be2b0034b49eb66f00d62325e781882.tar.gz
Function parameters and variable declarations are now all in pattern-style,
"Name: type". refs #241.
-rw-r--r--colm.vim5
-rw-r--r--colm/lmparse.kl18
2 files changed, 12 insertions, 11 deletions
diff --git a/colm.vim b/colm.vim
index 2a1938fd..1ff3aff5 100644
--- a/colm.vim
+++ b/colm.vim
@@ -31,7 +31,7 @@ syntax region rlTypeRegion matchgroup=regionDelimiter start="/" end="/"
\ contains=@rlTypes
syntax region cflTypeRegion matchgroup=regionDelimiter start="\[" end="\]"
- \ contains=cflTypeRegion,patRegion,otLit,typeKeywords
+ \ contains=cflTypeRegion,patRegion,otLit,typeKeywords,varCapture,qual
syntax region patRegion matchgroup=String start="\"" end="\"" end="\n"
\ contains=char,cflTypeRegion
@@ -67,6 +67,8 @@ syntax keyword Keyword
\ new deref
syntax match tokenName "[a-zA-Z_][a-zA-Z_0-9]*" contained
+syntax match varCapture "[a-zA-Z_][a-zA-Z_0-9]*:"
+syntax match qual "[a-zA-Z_][a-zA-Z_0-9]*::"
syntax region defTypes matchgroup=defKeywords
\ start="\<rl\>" start="\<def\>" start="\<token\>" start="\<ignore\>"
@@ -87,5 +89,6 @@ hi link typeKeywords Type
hi link regionDelimiter Type
hi link char String
hi link tokenName Function
+hi link varCapture Identifier
let b:current_syntax = "colm"
diff --git a/colm/lmparse.kl b/colm/lmparse.kl
index a93f3a59..cb89db59 100644
--- a/colm/lmparse.kl
+++ b/colm/lmparse.kl
@@ -156,10 +156,10 @@ nonterm param_list
ParameterList *paramList;
};
-param_list: param_list ',' param_var_def
+param_list: param_list param_var_def
final {
$$->paramList = $1->paramList;
- $$->paramList->append( $3->objField );
+ $$->paramList->append( $2->objField );
};
param_list: param_var_def
@@ -171,16 +171,14 @@ param_list: param_var_def
nonterm param_var_def uses var_def;
-param_var_def: var_def
+param_var_def: TK_Word ':' type_ref
final {
- $$->objField = $1->objField;
+ $$->objField = new ObjField( $1->loc, $3->typeRef, $1->data );
$$->objField->isParam = true;
};
-param_var_def: reference_type_ref TK_Word
+param_var_def: TK_Word ':' reference_type_ref
final {
- /* Return an object field object. The user of this nonterminal must
- * load it into the approrpriate map and do error checking. */
- $$->objField = new ObjField( $2->loc, $1->typeRef, $2->data );
+ $$->objField = new ObjField( $1->loc, $3->typeRef, $1->data );
$$->objField->isParam = true;
};
@@ -453,11 +451,11 @@ nonterm var_def
ObjField *objField;
};
-var_def: type_ref TK_Word
+var_def: TK_Word ':' type_ref
final {
/* Return an object field object. The user of this nonterminal must
* load it into the approrpriate map and do error checking. */
- $$->objField = new ObjField( $2->loc, $1->typeRef, $2->data );
+ $$->objField = new ObjField( $1->loc, $3->typeRef, $1->data );
};
region_def: