Index: tools/vscode/uwaterloo.cforall-0.1.0/syntaxes/cfa.tmLanguage.json
===================================================================
--- tools/vscode/uwaterloo.cforall-0.1.0/syntaxes/cfa.tmLanguage.json	(revision 822e4e5c5d6a59a6619ab98a340576074a90977b)
+++ tools/vscode/uwaterloo.cforall-0.1.0/syntaxes/cfa.tmLanguage.json	(revision 34d41ada587afb8f6a9602048dc551ba8bdfe531)
@@ -204,23 +204,23 @@
 				"declaration.type": {
 					"patterns": [
-							{ "match": "\\b(void|bool|char|short|int|long|signed|unsigned|float|double)", "name": "storage.type.built-in.primitive.cfa"},
-							{ "match": "\\b(zero_t|one_t|size_t|ssize_t|intptr_t|uintptr_t|\\$thread|\\$coroutine|\\$generator|\\$monitor)", "name": "storage.type.built-in.cfa"},
-							{ "match": "\\b(extern|static|inline|volatile|const|thread_local)", "name": "storage.modifier.cfa"}
+							{ "match": "(\\b|^|\\s)(void|bool|char|short|int|long|signed|unsigned|float|double)(\\b|$|\\s)", "name": "storage.type.built-in.primitive.cfa"},
+							{ "match": "(\\b|^|\\s)(zero_t|one_t|size_t|ssize_t|intptr_t|uintptr_t|\\$thread|\\$coroutine|\\$generator|\\$monitor)(\\b|$|\\s)", "name": "storage.type.built-in.cfa"},
+							{ "match": "(\\b|^|\\s)(extern|static|inline|volatile|const|thread_local)(\\b|$|\\s)", "name": "storage.modifier.cfa"}
 					]
 				},
 				"declaration.aggregate": {
-					"name": "meta.block.struct.cfa",
-					"begin": "(struct|union|enum|trait|coroutine|generator|monitor|thread)\\s+(\\w+)\\s*(\\{)",
-					"end": "(\\})(\\s+\\w+;)?",
-					"beginCaptures": {
-						"0": { "name": "meta.head.struct.cfa" },
-						"1": { "name": "storage.type.struct.cfa"
-						}
-					},
-					"endCaptures": {
-						"1": { "name": "punctuation.section.block.end.bracket.curly.extern.cfa" }
-					},
-					"contentName": "meta.body.extern.cfa",
-					"patterns": [{ "include": "#declaration" }]
+					"patterns": [
+						{ "name": "storage.type.struct.cfa"   , "match": "(\\b|^|\\s)struct(\\s+\\w+)?(\\b|$|\\s)"   , "captures": { "2": { "name": "entity.name.type.struct.cfa"   }} },
+						{ "name": "storage.type.union.cfa"    , "match": "(\\b|^|\\s)union(\\s+\\w+)?(\\b|$|\\s)"    , "captures": { "2": { "name": "entity.name.type.union.cfa"    }} },
+						{ "name": "storage.type.enum.cfa"     , "match": "(\\b|^|\\s)enum(\\s+\\w+)?(\\b|$|\\s)"     , "captures": { "2": { "name": "entity.name.type.enum.cfa"     }} },
+						{ "name": "storage.type.trait.cfa"    , "match": "(\\b|^|\\s)trait(\\s+\\w+)?(\\b|$|\\s)"    , "captures": { "2": { "name": "entity.name.type.trait.cfa"    }} },
+						{ "name": "storage.type.generator.cfa", "match": "(\\b|^|\\s)generator(\\s+\\w+)?(\\b|$|\\s)", "captures": { "2": { "name": "entity.name.type.generator.cfa"}} },
+						{ "name": "storage.type.coroutine.cfa", "match": "(\\b|^|\\s)coroutine(\\s+\\w+)?(\\b|$|\\s)", "captures": { "2": { "name": "entity.name.type.coroutine.cfa"}} },
+						{ "name": "storage.type.thread.cfa"   , "match": "(\\b|^|\\s)thread(\\s+\\w+)?(\\b|$|\\s)"   , "captures": { "2": { "name": "entity.name.type.thread.cfa"   }} },
+						{ "name": "storage.type.monitor.cfa"  , "match": "(\\b|^|\\s)monitor(\\s+\\w+)?(\\b|$|\\s)"  , "captures": { "2": { "name": "entity.name.type.monitor.cfa"  }} },
+						{ "name": "storage.type.dtype.cfa"    , "match": "(\\b|^|\\s)dtype(\\s+\\w+)?(\\b|$|\\s)"    , "captures": { "2": { "name": "entity.name.type.dtype.cfa"    }} },
+						{ "name": "storage.type.otype.cfa"    , "match": "(\\b|^|\\s)otype(\\s+\\w+)?(\\b|$|\\s)"    , "captures": { "2": { "name": "entity.name.type.otype.cfa"    }} },
+						{ "name": "storage.type.ttype.cfa"    , "match": "(\\b|^|\\s)ttyp(\\s+\\w+)?(\\b|$|\\s)"     , "captures": { "2": { "name": "entity.name.type.ttype.cfa"    }} }
+					]
 				}
 			}
@@ -295,5 +295,5 @@
 				{
 					"name": "keyword.operator.cfa",
-					"match": "\\?|\\+\\+|--|\\~|\\!|\\=|\\\\|\\*=|\\*|/=|/|%=|%|\\+=|\\+|-=|-|<<=|<<|<=|<|>>=|>>|>=|>|==|\\!=|&=|&|\\^=|\\^|\\|=|\\||="
+					"match": "\\?|\\+\\+|--|\\~|\\!|\\=|\\\\|->|\\*=|\\*|/=|/|%=|%|\\+=|\\+|-=|-|<<=|<<|<=|<|>>=|>>|>=|>|==|\\!=|&&|&=|&|\\^=|\\^|\\|\\||\\|=|\\||="
 				}
 			]
