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 (source_file
(statement (import
(import (simple_name_identifier))
(simple_name_identifier))) (import
(statement (simple_name_identifier)
(import (simple_type_identifier))
(simple_name_identifier) (import
(simple_type_identifier))) (simple_name_identifier))
(statement (function_definition
(import (simple_name_identifier)
(simple_name_identifier))) (block
(statement (match
(function_definition (name_definition
(simple_name_identifier) (simple_name_identifier))
(block (case
(match (condition
(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)))
(operator_expression (operator_expression
(name_expression (name_expression
(simple_name_identifier)) (simple_name_identifier))
(operator) (operator)
(number_literal))) (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
(name_expression (name_expression
(argument_name_identifier)) (reference
(operator_tail1) (access
(operator_expression (simple_name_identifier)
(name_expression (number_literal)))
(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)) (simple_name_identifier))
(operator) (number_literal))))
(name_definition (match
(simple_name_identifier))) (name_definition
(case (simple_name_identifier))
(name_expression (case
(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
(name_expression (name_expression
(simple_name_identifier) (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 (name_expression
(type
(simple_type_identifier))
(simple_name_identifier) (simple_name_identifier)
(argument_name_identifier) (number_literal))
(simple_name_identifier))) (simple_name_identifier)
(block
(operator_expression (operator_expression
(name_expression (name_expression
(simple_name_identifier)) (simple_name_identifier))
(operator) (operator)
(name_expression (number_literal)))))
(simple_name_identifier))) (match
(operator_expression (name_definition
(name_expression (simple_name_identifier))
(simple_name_identifier)) (case
(operator)
(number_literal))))
(loop
(operator_expression (operator_expression
(operator_expression (operator_expression
(name_expression (name_expression
@ -381,100 +146,328 @@ test_k 'n 'k : Int Int -> Bool = {
(name_expression (name_expression
(simple_name_identifier))) (simple_name_identifier)))
(operator_tail1) (operator_tail1)
(number_literal)) (name_expression
(block (simple_name_identifier)))))
(match (match
(name_definition (name_definition
(simple_name_identifier)) (simple_name_identifier))
(case (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 (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 (operator_expression
(name_expression (name_expression
(simple_name_identifier)) (simple_name_identifier))
(operator) (operator)
(number_literal))
(simple_name_identifier))))
(name_expression
(simple_name_identifier)
(operator_expression
(operator_expression
(operator_expression
(name_expression (name_expression
(simple_name_identifier))) (simple_name_identifier)
(operator_tail1) (simple_name_identifier)
(number_literal)))) (simple_name_identifier))
(condition (operator)
(name_expression (loop
(simple_name_identifier) (placeholder)
(argument_name_identifier) (operator_expression
(simple_name_identifier)) (number_literal)
(operator_expression (operator)
(name_expression (operator_expression
(simple_name_identifier)) (number_literal)
(operator)
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(number_literal))))
(char_literal)))
(operator)
(string_literal))
(operator) (operator)
(name_expression (name_expression
(simple_name_identifier))) (simple_name_identifier)))))))))
(operator_expression (function_definition
(name_expression (simple_name_identifier)
(simple_name_identifier)) (argument_name_identifier)
(operator) (argument_name_identifier)
(name_expression (type
(simple_name_identifier)))))) (simple_type_identifier))
(return (type
(simple_type_identifier))
(type
(simple_type_identifier))
(type
(simple_type_identifier))
(block
(condition
(operator_expression
(name_expression (name_expression
(simple_name_identifier)))))) (argument_name_identifier))
(statement (operator_tail1)
(function_definition (operator_expression
(simple_name_identifier) (name_expression
(argument_name_identifier) (argument_name_identifier))
(argument_name_identifier) (operator)
(type (number_literal)))
(simple_type_identifier)) (return
(type (operator_expression
(simple_type_identifier)) (name_expression
(type (type
(simple_type_identifier)) (simple_type_identifier))
(block (simple_name_identifier)
(condition (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 (operator_expression
(name_expression (name_expression
(simple_name_identifier)) (simple_name_identifier))
(operator) (operator)
(number_literal)) (name_expression
(return (simple_name_identifier)))))))
(bool_literal))) (function_definition
(match (simple_name_identifier)
(name_definition (argument_name_identifier)
(simple_name_identifier)) (type
(case (simple_type_identifier))
(operator_expression (type
(operator_expression (simple_type_identifier))
(name_expression (block
(simple_name_identifier)) (match
(operator) (name_definition
(operator_expression (simple_name_identifier))
(name_expression (case
(simple_name_identifier) (number_literal)))
(simple_name_identifier)) (match
(operator) (name_definition
(number_literal))) (simple_name_identifier))
(operator_tail1) (case
(operator_expression (number_literal)))
(float_number_literal) (loop
(operator) (name_expression
(name_expression (simple_name_identifier)
(simple_name_identifier) (name_expression
(simple_name_identifier)))))) (simple_name_identifier)
(match (argument_name_identifier)
(name_definition (simple_name_identifier)))
(simple_name_identifier)) (block
(case
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))))
(return
(operator_expression (operator_expression
(name_expression (name_expression
(simple_name_identifier)) (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 (operator_expression
(name_expression (name_expression
(simple_name_identifier)) (simple_name_identifier))
(operator) (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 ';')* function_definition: (definietion_info)? (ANNOTATION_INFO)* (constraint ';')*
(('%' | 'let') | ('$' | 'var'))? SIMPLE_NAME_IDENTIFIER (('%' | 'let') | ('$' | 'var'))? SIMPLE_NAME_IDENTIFIER
((ANNOTATION_IDENTIFIER)? ARGUMENT_NAME_IDENTIFIER)* ((ANNOTATION_IDENTIFIER)? ARGUMENT_NAME_IDENTIFIER ('?')?)*
(':' ((ANNOTATION_IDENTIFIER)? ('->' | 'in') | ('<-' | 'out') | ('<>' | 'ref'))? type)+)? (':' ((ANNOTATION_IDENTIFIER)? ('->' | 'in') | ('<-' | 'out') | ('<>' | 'ref'))? type)+)?
(('=' ((super_expression ';') | block)) | ';') (('=' ((super_expression ';') | block)) | ';')
; ;
@ -66,6 +66,8 @@ access: scoped_expression '[' super_expression ']' ;
reference: /* prec -1 ?? */ (('<>' | 'ref') | ('<-' | 'in')) scoped_expression ; reference: /* prec -1 ?? */ (('<>' | 'ref') | ('<-' | 'in')) scoped_expression ;
suffix_expression: scoped_expression ('?' | '!')
return: ('return' | 'bring') expression ; return: ('return' | 'bring') expression ;
loop_control: 'break' loop_control: 'break'

View file

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