]> gitweb.ps.run Git - toc/blobdiff - Toc.g4
function resolution, pre generics
[toc] / Toc.g4
diff --git a/Toc.g4 b/Toc.g4
index 336b7b03a0a0e8b15bf5745e0099d529b0a3e3a4..4309e007d5d048e15b5b729da03fbe08050f7016 100644 (file)
--- a/Toc.g4
+++ b/Toc.g4
@@ -20,7 +20,7 @@ typeModifier: '*' | ('[' (INT_LIT)? ']');
 namespaceSpecifier: typeName '::';\r
 \r
 funcDecl: 'func' func;\r
-func: funcName genericDecl? '(' parameter ')' (':' type) body;\r
+func: funcName genericDecl? '(' parameter ')' (':' type) (body | ';');\r
 parameter: (var (',' var)*)?;\r
 \r
 body: '{' stmt* '}';\r
@@ -72,7 +72,7 @@ expr: namespaceSpecifier* funcName '(' (expr (',' expr)*)? ')' #funcExpr
     | namespaceSpecifier* varName                              #identifierExpr\r
     ;\r
 \r
-literal: INT_LIT | DECIMAL_LIT | STRING_LIT | BOOL_LIT;\r
+literal: INT_LIT | DECIMAL_LIT | StringLit | BOOL_LIT;\r
 \r
 funcName: NAME;\r
 varName: NAME;\r
@@ -92,8 +92,15 @@ binary_op:
 \r
 INT_LIT: ('+' | '-')? [0-9]+;\r
 DECIMAL_LIT: ('+' | '-')* [0-9]+ '.' [0-9]+;\r
-STRING_LIT: '"' [^"]* '"';\r
 BOOL_LIT: 'true' | 'false';\r
+StringLit: '"' CharSeq '"';\r
+\r
+fragment CharSeq: Char+;\r
+fragment Char: ~["\\\r\n]\r
+             | '\\' ['"?abfnrtv\\]\r
+             | '\\\n'\r
+             | '\\\r\n'\r
+             ;\r
 \r
 NAME: ([a-z] | [A-Z] | [0-9])+;\r
 WS: [ \t\r\n]+ -> skip;\r