diff options
author | Adrian Thurston <thurston@complang.org> | 2011-03-24 04:24:52 +0000 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2011-03-24 04:24:52 +0000 |
commit | 6b6229980be2b0034b49eb66f00d62325e781882 (patch) | |
tree | 027aa847a7bf785cd85bd6eca972df7ebb08da72 | |
parent | 36a82b183881a0c587a98a53580a903d630881e3 (diff) | |
download | colm-6b6229980be2b0034b49eb66f00d62325e781882.tar.gz |
Function parameters and variable declarations are now all in pattern-style,
"Name: type". refs #241.
-rw-r--r-- | colm.vim | 5 | ||||
-rw-r--r-- | colm/lmparse.kl | 18 |
2 files changed, 12 insertions, 11 deletions
@@ -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: |