decl: varDecl ';'\r
| funcDecl\r
| structDecl\r
+ | namespaceDecl\r
;\r
\r
+namespaceDecl: 'namespace' typeName '{' decl* '}';\r
+\r
varDecl: 'var' var;\r
var: varName (':' type) ('=' expr)?;\r
varInit: varName (':' type) ('=' expr);\r
\r
\r
structDecl: 'struct' structName genericDecl? '{' structMember* '}';\r
-structMember: structVar | structMethod;\r
+structMember: privateDecl? structVar | structMethod;\r
structVar: var ';';\r
structMethod: func;\r
+privateDecl: 'private';\r
\r
genericDecl: '<' typeName (',' typeName)* '>';\r
\r