mult operator fixes

pull/315/head
Benjamin Sobel 2022-05-21 14:39:44 +07:00
parent cf0b6d92bf
commit e674ad71d8
5 changed files with 72942 additions and 72011 deletions

@ -118,7 +118,11 @@ module.exports = grammar({
// [$._real_expression, $._below_relational_expression], // [$._real_expression, $._below_relational_expression],
[$._postfix_expression], [$._postfix_expression],
[$._top_level_definition, $.lambda_expression], [$._top_level_definition, $.lambda_expression],
[$.lambda_expression, $.local_variable_declaration], [$._top_level_definition, $._var_or_type, $.function_signature],
[$._var_or_type, $.function_signature],
[$._var_or_type, $._function_formal_parameter],
[$._var_or_type],
[$._top_level_definition, $._var_or_type],
[$._top_level_definition, $._final_const_var_or_type], [$._top_level_definition, $._final_const_var_or_type],
[$._top_level_definition, $.const_object_expression, $._final_const_var_or_type], [$._top_level_definition, $.const_object_expression, $._final_const_var_or_type],
[$._final_const_var_or_type, $.const_object_expression], [$._final_const_var_or_type, $.const_object_expression],
@ -645,12 +649,20 @@ module.exports = grammar({
//todo: use the op names in place of these. //todo: use the op names in place of these.
_assignment_operator: $ => choice( _assignment_operator: $ => choice(
'=', '=',
// additive operator
'+=',
'-=',
// multiplicative operator
'*=',
'/=',
'%=',
'~/=',
seq( seq(
choice( choice(
$._multiplicative_operator, // $._multiplicative_operator,
$._shift_operator, $._shift_operator,
$._bitwise_operator, $._bitwise_operator,
$._additive_operator, // $._additive_operator,
'??' '??'
), ),
'=' '='
@ -1855,7 +1867,7 @@ module.exports = grammar({
), ),
seq( seq(
optional($._late_builtin), optional($._late_builtin),
_var_or_type, $._var_or_type,
$.initialized_identifier_list $.initialized_identifier_list
) )
// TODO: add in the 'late' keyword from the informal draft spec: // TODO: add in the 'late' keyword from the informal draft spec:
@ -2071,10 +2083,7 @@ module.exports = grammar({
$._type $._type
)), )),
seq(optional($._late_builtin), seq(optional($._late_builtin),
choice( $._var_or_type)
$._type,
$.inferred_type,
))
), ),
_type: $ => choice( _type: $ => choice(

@ -1952,16 +1952,36 @@
"type": "STRING", "type": "STRING",
"value": "=" "value": "="
}, },
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": "~/="
},
{ {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "CHOICE", "type": "CHOICE",
"members": [ "members": [
{
"type": "SYMBOL",
"name": "_multiplicative_operator"
},
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_shift_operator" "name": "_shift_operator"
@ -1970,10 +1990,6 @@
"type": "SYMBOL", "type": "SYMBOL",
"name": "_bitwise_operator" "name": "_bitwise_operator"
}, },
{
"type": "SYMBOL",
"name": "_additive_operator"
},
{ {
"type": "STRING", "type": "STRING",
"value": "??" "value": "??"
@ -6940,17 +6956,8 @@
] ]
}, },
{ {
"type": "CHOICE", "type": "SYMBOL",
"members": [ "name": "_var_or_type"
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "inferred_type"
}
]
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
@ -7982,17 +7989,8 @@
] ]
}, },
{ {
"type": "CHOICE", "type": "SYMBOL",
"members": [ "name": "_var_or_type"
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "inferred_type"
}
]
} }
] ]
} }
@ -8613,6 +8611,36 @@
"value": "void" "value": "void"
} }
}, },
"_var_or_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "inferred_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"inferred_type": { "inferred_type": {
"type": "PREC", "type": "PREC",
"value": 0, "value": 0,
@ -10205,8 +10233,24 @@
"lambda_expression" "lambda_expression"
], ],
[ [
"lambda_expression", "_top_level_definition",
"local_variable_declaration" "_var_or_type",
"function_signature"
],
[
"_var_or_type",
"function_signature"
],
[
"_var_or_type",
"_function_formal_parameter"
],
[
"_var_or_type"
],
[
"_top_level_definition",
"_var_or_type"
], ],
[ [
"_top_level_definition", "_top_level_definition",

@ -749,7 +749,7 @@
"required": true, "required": true,
"types": [ "types": [
{ {
"type": "%", "type": "%=",
"named": false "named": false
}, },
{ {
@ -757,11 +757,19 @@
"named": false "named": false
}, },
{ {
"type": "*", "type": "*=",
"named": false "named": false
}, },
{ {
"type": "/", "type": "+=",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "/=",
"named": false "named": false
}, },
{ {
@ -793,7 +801,7 @@
"named": false "named": false
}, },
{ {
"type": "~/", "type": "~/=",
"named": false "named": false
} }
] ]
@ -945,7 +953,7 @@
"required": true, "required": true,
"types": [ "types": [
{ {
"type": "%", "type": "%=",
"named": false "named": false
}, },
{ {
@ -953,11 +961,19 @@
"named": false "named": false
}, },
{ {
"type": "*", "type": "*=",
"named": false "named": false
}, },
{ {
"type": "/", "type": "+=",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "/=",
"named": false "named": false
}, },
{ {
@ -989,7 +1005,7 @@
"named": false "named": false
}, },
{ {
"type": "~/", "type": "~/=",
"named": false "named": false
} }
] ]
@ -11243,6 +11259,10 @@
"type": "%", "type": "%",
"named": false "named": false
}, },
{
"type": "%=",
"named": false
},
{ {
"type": "&", "type": "&",
"named": false "named": false
@ -11271,10 +11291,22 @@
"type": "*", "type": "*",
"named": false "named": false
}, },
{
"type": "*=",
"named": false
},
{
"type": "+=",
"named": false
},
{ {
"type": ",", "type": ",",
"named": false "named": false
}, },
{
"type": "-=",
"named": false
},
{ {
"type": ".", "type": ".",
"named": false "named": false
@ -11303,6 +11335,10 @@
"type": "///", "type": "///",
"named": false "named": false
}, },
{
"type": "/=",
"named": false
},
{ {
"type": ":", "type": ":",
"named": false "named": false
@ -11726,5 +11762,9 @@
{ {
"type": "~/", "type": "~/",
"named": false "named": false
},
{
"type": "~/=",
"named": false
} }
] ]

File diff suppressed because it is too large Load Diff

Binary file not shown.