Make records grammar more orthogonal

We used

  name [: expr]

grammar before, now it is

  [name :] expr

which makes things simpler
This commit is contained in:
Aleksey Kladov 2020-04-11 16:42:24 +02:00
parent e7a68c8f55
commit 7a39bc3ba2
13 changed files with 142 additions and 68 deletions

View file

@ -0,0 +1,49 @@
SOURCE_FILE@[0; 45)
FN_DEF@[0; 44)
FN_KW@[0; 2) "fn"
WHITESPACE@[2; 3) " "
NAME@[3; 7)
IDENT@[3; 7) "main"
PARAM_LIST@[7; 9)
L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " "
BLOCK_EXPR@[10; 44)
BLOCK@[10; 44)
L_CURLY@[10; 11) "{"
WHITESPACE@[11; 16) "\n "
RECORD_LIT@[16; 42)
PATH@[16; 17)
PATH_SEGMENT@[16; 17)
NAME_REF@[16; 17)
IDENT@[16; 17) "S"
WHITESPACE@[17; 18) " "
RECORD_FIELD_LIST@[18; 42)
L_CURLY@[18; 19) "{"
WHITESPACE@[19; 20) " "
RECORD_FIELD@[20; 40)
NAME_REF@[20; 25)
IDENT@[20; 25) "field"
WHITESPACE@[25; 26) " "
RANGE_EXPR@[26; 40)
DOT2@[26; 28) ".."
CALL_EXPR@[28; 40)
PATH_EXPR@[28; 38)
PATH@[28; 38)
PATH@[28; 29)
PATH_SEGMENT@[28; 29)
NAME_REF@[28; 29)
IDENT@[28; 29) "S"
COLON2@[29; 31) "::"
PATH_SEGMENT@[31; 38)
NAME_REF@[31; 38)
IDENT@[31; 38) "default"
ARG_LIST@[38; 40)
L_PAREN@[38; 39) "("
R_PAREN@[39; 40) ")"
WHITESPACE@[40; 41) " "
R_CURLY@[41; 42) "}"
WHITESPACE@[42; 43) "\n"
R_CURLY@[43; 44) "}"
WHITESPACE@[44; 45) "\n"
error [25; 25): expected COLON

View file

@ -0,0 +1,3 @@
fn main() {
S { field ..S::default() }
}

View file

@ -35,8 +35,11 @@ SOURCE_FILE@[0; 112)
L_CURLY@[27; 28) "{"
WHITESPACE@[28; 29) " "
RECORD_FIELD@[29; 30)
NAME_REF@[29; 30)
IDENT@[29; 30) "x"
PATH_EXPR@[29; 30)
PATH@[29; 30)
PATH_SEGMENT@[29; 30)
NAME_REF@[29; 30)
IDENT@[29; 30) "x"
COMMA@[30; 31) ","
WHITESPACE@[31; 32) " "
RECORD_FIELD@[32; 37)
@ -62,8 +65,11 @@ SOURCE_FILE@[0; 112)
L_CURLY@[48; 49) "{"
WHITESPACE@[49; 50) " "
RECORD_FIELD@[50; 51)
NAME_REF@[50; 51)
IDENT@[50; 51) "x"
PATH_EXPR@[50; 51)
PATH@[50; 51)
PATH_SEGMENT@[50; 51)
NAME_REF@[50; 51)
IDENT@[50; 51) "x"
COMMA@[51; 52) ","
WHITESPACE@[52; 53) " "
RECORD_FIELD@[53; 58)