Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed atomic_counter
Binary file not shown.
6 changes: 3 additions & 3 deletions parser/TLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ NIL_LIT : 'nil' -> mode(NLSEMI);
RETURN : 'return' -> mode(NLSEMI);
SYNC : 'sync'; // New keyword
//SELECT : 'select';
//STRUCT : 'struct';
STRUCT : 'struct';
//SWITCH : 'switch';
//TYPE : 'type';
TYPE : 'type';
VAR : 'var';

IDENTIFIER: LETTER (LETTER | UNICODE_DIGIT)* -> mode(NLSEMI);
Expand All @@ -76,7 +76,7 @@ ASSIGN : '=';
COMMA : ',';
SEMI : ';';
COLON : ':';
//DOT : '.';
DOT : '.';
PLUS_PLUS : '++' -> mode(NLSEMI);
MINUS_MINUS : '--' -> mode(NLSEMI);
DECLARE_ASSIGN : ':=';
Expand Down
54 changes: 29 additions & 25 deletions parser/TParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ importPath

declaration
: constDecl
//| typeDecl
| typeDecl
| varDecl
;

Expand All @@ -116,10 +116,10 @@ identifierList
expressionList
: expression (COMMA expression)*
;
/*

typeDecl
: TYPE (typeSpec | L_PAREN (typeSpec eos)* R_PAREN)
;*/
;

typeSpec
: aliasDecl
Expand Down Expand Up @@ -169,7 +169,7 @@ varDecl
;

varSpec
: identifierList (type_ (ASSIGN expressionList)? | ASSIGN expressionList)
: identifierList (type_ (ASSIGN expressionList)?) // | ASSIGN expressionList not supported yet (without type)
;

block
Expand Down Expand Up @@ -376,13 +376,13 @@ typeArgs
;

typeName
//: qualifiedIdent
: IDENTIFIER
: qualifiedIdent
| IDENTIFIER
;

typeLit
: arrayType
//| structType
| structType
//| pointerType
| functionType
//| interfaceType
Expand All @@ -393,7 +393,7 @@ typeLit
;

arrayType
: L_BRACKET arrayLength R_BRACKET elementType
: L_BRACKET arrayLength? R_BRACKET elementType
;

arrayLength
Expand All @@ -410,12 +410,12 @@ pointerType

interfaceType
: INTERFACE L_CURLY ((methodSpec | typeElement) eos)* R_CURLY
;

;*/
/*
sliceType
: L_BRACKET R_BRACKET elementType
;

;*/
/*
// It's possible to replace `type` with more restricted typeLit list and also pay attention to nil maps
mapType
: MAP L_BRACKET type_ R_BRACKET elementType
Expand Down Expand Up @@ -462,7 +462,7 @@ parameterDecl
expression
: primaryExpr
| unary_op = (PLUS | MINUS | EXCLAMATION | CARET | STAR | AMPERSAND /*| RECEIVE*/) expression
| expression EMIT expression
| expression EMIT expression // For Sync channels
| expression mul_op = (STAR | DIV | MOD | LSHIFT | RSHIFT | AMPERSAND | BIT_CLEAR) expression
| expression add_op = (PLUS | MINUS | OR | CARET) expression
| expression rel_op = (
Expand All @@ -482,7 +482,11 @@ primaryExpr
/*( {this->isOperand()}? operand
| {this->isConversion()}? conversion
| {this.isMethodExpr()}? methodExpr )*/
( /*DOT IDENTIFIER* | index | /*slice_ | typeAssertion |*/ arguments )*
op = operation*
;

operation
: ( DOT IDENTIFIER* | index | slice_ | /*typeAssertion |*/ arguments )
;

conversion
Expand Down Expand Up @@ -519,20 +523,20 @@ integer

operandName
: IDENTIFIER
// | qualifiedIdent
| qualifiedIdent
;
/*

qualifiedIdent
: IDENTIFIER DOT IDENTIFIER
;*/
;

compositeLit
: literalType literalValue
;

literalType
//: structType
: arrayType
: structType
| arrayType
//| L_BRACKET ELLIPSIS R_BRACKET elementType
//| sliceType
//| mapType
Expand Down Expand Up @@ -560,23 +564,23 @@ element
: expression
| literalValue
;
/*

structType
: STRUCT L_CURLY (fieldDecl eos)* R_CURLY
;

fieldDecl
: (identifierList type_ | embeddedField) tag = string_?
;*/
;

string_
: RAW_STRING_LIT
| INTERPRETED_STRING_LIT
;
/*

embeddedField
: STAR? typeName typeArgs?
;*/
;

functionLit
: FUNC signature block
Expand All @@ -585,10 +589,10 @@ functionLit
index
: L_BRACKET expression R_BRACKET
;
/*

slice_
: L_BRACKET (expression? COLON expression? | expression? COLON expression COLON expression) R_BRACKET
;*/
;
/*
typeAssertion
: DOT L_PAREN type_ R_PAREN
Expand Down
767 changes: 387 additions & 380 deletions parser/generated/TLexer.cpp

Large diffs are not rendered by default.

28 changes: 14 additions & 14 deletions parser/generated/TLexer.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,20 @@ class TLexer : public antlr4::Lexer {
enum {
AS = 1, ASYNC = 2, BREAK = 3, CASE = 4, CONST = 5, CONTINUE = 6, ELSE = 7,
FOR = 8, FROM = 9, FUNC = 10, JOIN = 11, IF = 12, NIL_LIT = 13, RETURN = 14,
SYNC = 15, VAR = 16, IDENTIFIER = 17, L_PAREN = 18, R_PAREN = 19, L_CURLY = 20,
R_CURLY = 21, L_BRACKET = 22, R_BRACKET = 23, ASSIGN = 24, COMMA = 25,
SEMI = 26, COLON = 27, PLUS_PLUS = 28, MINUS_MINUS = 29, DECLARE_ASSIGN = 30,
LOGICAL_OR = 31, LOGICAL_AND = 32, SYNC_RETURN = 33, EQUALS = 34, NOT_EQUALS = 35,
LESS = 36, LESS_OR_EQUALS = 37, GREATER = 38, GREATER_OR_EQUALS = 39,
OR = 40, DIV = 41, MOD = 42, LSHIFT = 43, RSHIFT = 44, BIT_CLEAR = 45,
UNDERLYING = 46, EXCLAMATION = 47, PLUS = 48, MINUS = 49, CARET = 50,
STAR = 51, AMPERSAND = 52, EMIT = 53, DECIMAL_LIT = 54, BINARY_LIT = 55,
OCTAL_LIT = 56, HEX_LIT = 57, FLOAT_LIT = 58, DECIMAL_FLOAT_LIT = 59,
HEX_FLOAT_LIT = 60, IMAGINARY_LIT = 61, RUNE_LIT = 62, BYTE_VALUE = 63,
OCTAL_BYTE_VALUE = 64, HEX_BYTE_VALUE = 65, LITTLE_U_VALUE = 66, BIG_U_VALUE = 67,
RAW_STRING_LIT = 68, INTERPRETED_STRING_LIT = 69, WS = 70, COMMENT = 71,
TERMINATOR = 72, LINE_COMMENT = 73, WS_NLSEMI = 74, COMMENT_NLSEMI = 75,
LINE_COMMENT_NLSEMI = 76, EOS = 77, OTHER = 78
SYNC = 15, STRUCT = 16, TYPE = 17, VAR = 18, IDENTIFIER = 19, L_PAREN = 20,
R_PAREN = 21, L_CURLY = 22, R_CURLY = 23, L_BRACKET = 24, R_BRACKET = 25,
ASSIGN = 26, COMMA = 27, SEMI = 28, COLON = 29, DOT = 30, PLUS_PLUS = 31,
MINUS_MINUS = 32, DECLARE_ASSIGN = 33, LOGICAL_OR = 34, LOGICAL_AND = 35,
SYNC_RETURN = 36, EQUALS = 37, NOT_EQUALS = 38, LESS = 39, LESS_OR_EQUALS = 40,
GREATER = 41, GREATER_OR_EQUALS = 42, OR = 43, DIV = 44, MOD = 45, LSHIFT = 46,
RSHIFT = 47, BIT_CLEAR = 48, UNDERLYING = 49, EXCLAMATION = 50, PLUS = 51,
MINUS = 52, CARET = 53, STAR = 54, AMPERSAND = 55, EMIT = 56, DECIMAL_LIT = 57,
BINARY_LIT = 58, OCTAL_LIT = 59, HEX_LIT = 60, FLOAT_LIT = 61, DECIMAL_FLOAT_LIT = 62,
HEX_FLOAT_LIT = 63, IMAGINARY_LIT = 64, RUNE_LIT = 65, BYTE_VALUE = 66,
OCTAL_BYTE_VALUE = 67, HEX_BYTE_VALUE = 68, LITTLE_U_VALUE = 69, BIG_U_VALUE = 70,
RAW_STRING_LIT = 71, INTERPRETED_STRING_LIT = 72, WS = 73, COMMENT = 74,
TERMINATOR = 75, LINE_COMMENT = 76, WS_NLSEMI = 77, COMMENT_NLSEMI = 78,
LINE_COMMENT_NLSEMI = 79, EOS = 80, OTHER = 81
};

enum {
Expand Down
11 changes: 10 additions & 1 deletion parser/generated/TLexer.interp

Large diffs are not rendered by default.

Loading