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

@ -1952,16 +1952,36 @@
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": "~/="
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_multiplicative_operator"
},
{
"type": "SYMBOL",
"name": "_shift_operator"
@ -1970,10 +1990,6 @@
"type": "SYMBOL",
"name": "_bitwise_operator"
},
{
"type": "SYMBOL",
"name": "_additive_operator"
},
{
"type": "STRING",
"value": "??"
@ -6940,17 +6956,8 @@
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "inferred_type"
}
]
"type": "SYMBOL",
"name": "_var_or_type"
},
{
"type": "SYMBOL",
@ -7982,17 +7989,8 @@
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "inferred_type"
}
]
"type": "SYMBOL",
"name": "_var_or_type"
}
]
}
@ -8613,6 +8611,36 @@
"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": {
"type": "PREC",
"value": 0,
@ -10205,8 +10233,24 @@
"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",

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

File diff suppressed because it is too large Load Diff

Binary file not shown.