minor fixes

This commit is contained in:
ProgramSnail 2023-07-17 23:14:39 +03:00
parent d218e02a78
commit befa2f0395
4 changed files with 1069 additions and 1064 deletions

View file

@ -62,317 +62,82 @@ test_k 'n 'k : Int Int -> Bool = {
--------------------------------------------------------------------------------
(source_file
(statement
(import
(simple_name_identifier)))
(statement
(import
(simple_name_identifier)
(simple_type_identifier)))
(statement
(import
(simple_name_identifier)))
(statement
(function_definition
(simple_name_identifier)
(block
(match
(name_definition
(simple_name_identifier))
(case
(condition
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(name_expression
(reference
(access
(simple_name_identifier)
(number_literal)))
(simple_name_identifier))
(number_literal))))
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier)
(number_literal))))
(match
(operator_expression
(name_definition
(simple_name_identifier))
(operator)
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier)
(number_literal)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(name_expression
(type
(simple_type_identifier))
(simple_name_identifier)
(number_literal))
(simple_name_identifier)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(operator_tail1)
(name_expression
(simple_name_identifier)))))
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier))))
(loop
(name_definition
(simple_name_identifier))
(loop
(name_definition
(simple_name_identifier))
(operator_expression
(number_literal)
(operator)
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(operator_tail1)
(number_literal)))
(import
(simple_name_identifier))
(import
(simple_name_identifier)
(simple_type_identifier))
(import
(simple_name_identifier))
(function_definition
(simple_name_identifier)
(block
(match
(name_definition
(simple_name_identifier))
(case
(condition
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))
(block
(condition
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(operator_tail1)
(name_expression
(simple_name_identifier)))
(name_expression
(simple_name_identifier)
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))
(operator)
(string_literal))
(operator_tail1)
(name_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(simple_name_identifier))))
(name_expression
(simple_name_identifier)
(operator_expression
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))
(operator)
(loop
(placeholder)
(operator_expression
(number_literal)
(operator)
(operator_expression
(number_literal)
(operator)
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(number_literal))))
(char_literal)))
(operator)
(string_literal))
(operator)
(name_expression
(simple_name_identifier))))))))))
(statement
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(condition
(operator_expression
(number_literal))
(name_expression
(argument_name_identifier))
(operator_tail1)
(operator_expression
(name_expression
(argument_name_identifier))
(operator)
(number_literal)))
(return
(operator_expression
(name_expression
(type
(simple_type_identifier))
(simple_name_identifier)
(number_literal))
(operator)
(name_expression
(type
(simple_type_identifier))
(simple_name_identifier)
(argument_name_identifier)))))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
(argument_name_identifier))
(operator)
(name_expression
(argument_name_identifier)))
(operator_tail1)
(number_literal))))
(match
(operator_expression
(name_definition
(reference
(access
(simple_name_identifier)
(number_literal)))
(simple_name_identifier))
(operator)
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier))))
(match
(operator_expression
(name_definition
(simple_name_identifier))
(operator)
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(argument_name_identifier))))
(return
(operator_expression
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(operator_tail1)
(name_expression
(simple_name_identifier)))
(operator_tail2)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier))))))))
(statement
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(match
(name_definition
(simple_name_identifier))
(case
(number_literal)))
(match
(name_definition
(simple_name_identifier))
(case
(number_literal)))
(loop
(number_literal))))
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier)
(number_literal))))
(match
(operator_expression
(name_definition
(simple_name_identifier))
(operator)
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier)
(number_literal)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(name_expression
(type
(simple_type_identifier))
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier)))
(block
(number_literal))
(simple_name_identifier)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))))
(loop
(number_literal)))))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
@ -381,100 +146,328 @@ test_k 'n 'k : Int Int -> Bool = {
(name_expression
(simple_name_identifier)))
(operator_tail1)
(number_literal))
(block
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier)))))
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier))))
(loop
(name_definition
(simple_name_identifier))
(loop
(name_definition
(simple_name_identifier))
(operator_expression
(number_literal)
(operator)
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(operator_tail1)
(number_literal)))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))
(block
(condition
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(operator_tail1)
(name_expression
(simple_name_identifier)))
(name_expression
(simple_name_identifier)
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))
(operator)
(string_literal))
(operator_tail1)
(name_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(simple_name_identifier))))
(name_expression
(simple_name_identifier)
(operator_expression
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier)))
(operator_tail1)
(number_literal))))
(condition
(name_expression
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier))
(operator_expression
(name_expression
(simple_name_identifier))
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))
(operator)
(loop
(placeholder)
(operator_expression
(number_literal)
(operator)
(operator_expression
(number_literal)
(operator)
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(number_literal))))
(char_literal)))
(operator)
(string_literal))
(operator)
(name_expression
(simple_name_identifier)))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier))))))
(return
(simple_name_identifier)))))))))
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(condition
(operator_expression
(name_expression
(simple_name_identifier))))))
(statement
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(condition
(argument_name_identifier))
(operator_tail1)
(operator_expression
(name_expression
(argument_name_identifier))
(operator)
(number_literal)))
(return
(operator_expression
(name_expression
(type
(simple_type_identifier))
(simple_name_identifier)
(number_literal))
(operator)
(name_expression
(type
(simple_type_identifier))
(simple_name_identifier)
(argument_name_identifier)))))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
(argument_name_identifier))
(operator)
(name_expression
(argument_name_identifier)))
(operator_tail1)
(number_literal))))
(match
(operator_expression
(name_definition
(simple_name_identifier))
(operator)
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier))))
(match
(operator_expression
(name_definition
(simple_name_identifier))
(operator)
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(argument_name_identifier))))
(return
(operator_expression
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(operator_tail1)
(name_expression
(simple_name_identifier)))
(operator_tail2)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(return
(bool_literal)))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(operator_expression
(name_expression
(simple_name_identifier)
(simple_name_identifier))
(operator)
(number_literal)))
(operator_tail1)
(operator_expression
(float_number_literal)
(operator)
(name_expression
(simple_name_identifier)
(simple_name_identifier))))))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))))
(return
(name_expression
(simple_name_identifier)))))))
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(match
(name_definition
(simple_name_identifier))
(case
(number_literal)))
(match
(name_definition
(simple_name_identifier))
(case
(number_literal)))
(loop
(name_expression
(simple_name_identifier)
(name_expression
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier)))
(block
(operator_expression
(name_expression
(simple_name_identifier))
(operator_tail1)
(operator)
(name_expression
(simple_name_identifier)))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))))
(loop
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(operator_tail1)
(number_literal))
(block
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(operator_tail1)
(number_literal))))
(condition
(name_expression
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))))))))
(name_expression
(simple_name_identifier)))
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier))))))
(return
(name_expression
(simple_name_identifier)))))
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(condition
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(return
(bool_literal)))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(operator_expression
(name_expression
(simple_name_identifier)
(simple_name_identifier))
(operator)
(number_literal)))
(operator_tail1)
(operator_expression
(float_number_literal)
(operator)
(name_expression
(simple_name_identifier)
(simple_name_identifier))))))
(match
(name_definition
(simple_name_identifier))
(case
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))))
(return
(operator_expression
(name_expression
(simple_name_identifier))
(operator_tail1)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))))))

File diff suppressed because it is too large Load diff

View file

@ -24,7 +24,7 @@ type_definition: (DEFINITION_INFO)? (ANNOTATION_INFO)* ('^')?
function_definition: (definietion_info)? (ANNOTATION_INFO)* (constraint ';')*
(('%' | 'let') | ('$' | 'var'))? SIMPLE_NAME_IDENTIFIER
((ANNOTATION_IDENTIFIER)? ARGUMENT_NAME_IDENTIFIER)*
((ANNOTATION_IDENTIFIER)? ARGUMENT_NAME_IDENTIFIER ('?')?)*
(':' ((ANNOTATION_IDENTIFIER)? ('->' | 'in') | ('<-' | 'out') | ('<>' | 'ref'))? type)+)?
(('=' ((super_expression ';') | block)) | ';')
;
@ -66,6 +66,8 @@ access: scoped_expression '[' super_expression ']' ;
reference: /* prec -1 ?? */ (('<>' | 'ref') | ('<-' | 'in')) scoped_expression ;
suffix_expression: scoped_expression ('?' | '!')
return: ('return' | 'bring') expression ;
loop_control: 'break'

View file

@ -13,9 +13,9 @@ module.exports = grammar({
// --- sources
source_file: $ => repeat1($.statement),
source_file: $ => repeat1($._statement),
statement: $ => choice(
_statement: $ => choice(
$.import,
$.type_definition,
$.function_definition,
@ -57,6 +57,7 @@ module.exports = grammar({
repeat(seq(
optional($.annotation_identifier),
$.argument_name_identifier,
optional('?'),
)),
optional(seq(':', repeat1(seq(
optional($.annotation_identifier),