mirror of
https://codeberg.org/ProgramSnail/tree-sitter-lang.git
synced 2026-01-25 13:07:09 +00:00
minor fixes
This commit is contained in:
parent
d218e02a78
commit
befa2f0395
4 changed files with 1069 additions and 1064 deletions
|
|
@ -62,17 +62,13 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(source_file
|
(source_file
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier))
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_type_identifier)))
|
(simple_type_identifier))
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -240,8 +236,7 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(string_literal))
|
(string_literal))
|
||||||
(operator)
|
(operator)
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))))))))))
|
(simple_name_identifier)))))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
|
|
@ -333,8 +328,7 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(simple_name_identifier))
|
(simple_name_identifier))
|
||||||
(operator)
|
(operator)
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))))))))
|
(simple_name_identifier)))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
|
|
@ -415,8 +409,7 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(simple_name_identifier))))))
|
(simple_name_identifier))))))
|
||||||
(return
|
(return
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))))))
|
(simple_name_identifier)))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
|
|
@ -477,4 +470,4 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))
|
(simple_name_identifier))
|
||||||
(operator)
|
(operator)
|
||||||
(number_literal))))))))
|
(number_literal)))))))
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,13 @@ func = {
|
||||||
} !!-> return ();
|
} !!-> return ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
: example of function with optional arguments (without type annotation)
|
||||||
|
: real type is 'A? 'A? -> 'A?
|
||||||
|
sum 'a? 'b? =
|
||||||
|
'a & 'b =: %a? & %b? -> a + b
|
||||||
|
=: _ -> null;
|
||||||
|
|
||||||
|
|
||||||
: example that shows that default annotations are argument names (without ')
|
: example that shows that default annotations are argument names (without ')
|
||||||
@a is integer
|
@a is integer
|
||||||
@b also integer
|
@b also integer
|
||||||
|
|
@ -194,23 +201,18 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(source_file
|
(source_file
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier))
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier))
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier))
|
||||||
(statement
|
|
||||||
(import
|
(import
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -295,8 +297,37 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier)))
|
||||||
(return
|
(return
|
||||||
(unit_literal))))))
|
(unit_literal)))))
|
||||||
(statement
|
(function_definition
|
||||||
|
(definition_info)
|
||||||
|
(simple_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(match
|
||||||
|
(operator_expression
|
||||||
|
(name_expression
|
||||||
|
(argument_name_identifier))
|
||||||
|
(operator)
|
||||||
|
(name_expression
|
||||||
|
(argument_name_identifier)))
|
||||||
|
(case
|
||||||
|
(operator_expression
|
||||||
|
(suffix_expression
|
||||||
|
(name_definition
|
||||||
|
(simple_name_identifier)))
|
||||||
|
(operator)
|
||||||
|
(suffix_expression
|
||||||
|
(name_definition
|
||||||
|
(simple_name_identifier))))
|
||||||
|
(operator_expression
|
||||||
|
(name_expression
|
||||||
|
(simple_name_identifier))
|
||||||
|
(operator)
|
||||||
|
(name_expression
|
||||||
|
(simple_name_identifier))))
|
||||||
|
(case
|
||||||
|
(placeholder)
|
||||||
|
(null_literal))))
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(annotation_info
|
(annotation_info
|
||||||
|
|
@ -311,8 +342,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
(operator)
|
(operator)
|
||||||
(name_expression
|
(name_expression
|
||||||
(argument_name_identifier)))))
|
(argument_name_identifier))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(annotation_info
|
(annotation_info
|
||||||
|
|
@ -352,8 +382,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(operator)
|
(operator)
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)))))))
|
(argument_name_identifier))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -530,8 +559,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(name_expression
|
(name_expression
|
||||||
(operator)
|
(operator)
|
||||||
(number_literal)
|
(number_literal)
|
||||||
(number_literal)))))))
|
(number_literal))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -539,8 +567,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)))))
|
(simple_name_identifier))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -548,8 +575,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)))))
|
(simple_name_identifier))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -557,8 +583,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_name_identifier)))))
|
(simple_name_identifier))))
|
||||||
(statement
|
|
||||||
(type_definition
|
(type_definition
|
||||||
(simple_type_identifier)
|
(simple_type_identifier)
|
||||||
(tuple_type
|
(tuple_type
|
||||||
|
|
@ -567,8 +592,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_type_identifier))
|
(simple_type_identifier))
|
||||||
(annotation_identifier)
|
(annotation_identifier)
|
||||||
(type
|
(type
|
||||||
(simple_type_identifier)))))
|
(simple_type_identifier))))
|
||||||
(statement
|
|
||||||
(type_definition
|
(type_definition
|
||||||
(simple_type_identifier)
|
(simple_type_identifier)
|
||||||
(variant_type
|
(variant_type
|
||||||
|
|
@ -583,8 +607,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(tuple_type
|
(tuple_type
|
||||||
(annotation_identifier)
|
(annotation_identifier)
|
||||||
(type
|
(type
|
||||||
(simple_type_identifier))))))
|
(simple_type_identifier)))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -649,8 +672,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))
|
(simple_name_identifier))
|
||||||
(operator)
|
(operator)
|
||||||
(bool_literal)))))))))
|
(bool_literal))))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -715,8 +737,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))
|
(simple_name_identifier))
|
||||||
(operator)
|
(operator)
|
||||||
(bool_literal)))))))))
|
(bool_literal))))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
|
|
@ -724,8 +745,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_type_identifier)
|
(simple_type_identifier)
|
||||||
(type
|
(type
|
||||||
(argument_type_identifier)))
|
(argument_type_identifier)))
|
||||||
(block)))
|
(block))
|
||||||
(statement
|
|
||||||
(type_definition
|
(type_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_type_identifier)
|
(simple_type_identifier)
|
||||||
|
|
@ -751,8 +771,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(type
|
(type
|
||||||
(argument_type_identifier))
|
(argument_type_identifier))
|
||||||
(type
|
(type
|
||||||
(argument_type_identifier))))))
|
(argument_type_identifier)))))
|
||||||
(statement
|
|
||||||
(type_definition
|
(type_definition
|
||||||
(simple_type_identifier)
|
(simple_type_identifier)
|
||||||
(function_definition
|
(function_definition
|
||||||
|
|
@ -773,8 +792,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier)))))
|
(simple_name_identifier))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -799,8 +817,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_type_identifier)
|
(simple_type_identifier)
|
||||||
(type
|
(type
|
||||||
(simple_type_identifier)))
|
(simple_type_identifier)))
|
||||||
(simple_name_identifier)))))))
|
(simple_name_identifier))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -839,8 +856,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier)))
|
||||||
(operator)
|
(operator)
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))))))
|
(simple_name_identifier)))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(block
|
(block
|
||||||
|
|
@ -851,8 +867,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(reference
|
(reference
|
||||||
(access
|
(access
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(number_literal))))))))
|
(number_literal)))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -864,8 +879,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)))))
|
(argument_name_identifier))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -894,8 +908,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
(case
|
(case
|
||||||
(reference
|
(reference
|
||||||
(simple_name_identifier)))))))
|
(simple_name_identifier))))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -914,8 +927,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(simple_name_identifier)))
|
(simple_name_identifier)))
|
||||||
(operator)
|
(operator)
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier)))))
|
(simple_name_identifier))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -927,8 +939,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
(case
|
(case
|
||||||
(name_expression
|
(name_expression
|
||||||
(simple_name_identifier))))))
|
(simple_name_identifier)))))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -946,8 +957,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(annotation_identifier)
|
(annotation_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(annotation_identifier)
|
(annotation_identifier)
|
||||||
(argument_name_identifier))))
|
(argument_name_identifier)))
|
||||||
(statement
|
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
|
|
@ -963,8 +973,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(type
|
(type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier))
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(argument_name_identifier))))
|
(argument_name_identifier)))
|
||||||
(statement
|
|
||||||
(typeclass_definition
|
(typeclass_definition
|
||||||
(definition_info)
|
(definition_info)
|
||||||
(typeclass_identifier)
|
(typeclass_identifier)
|
||||||
|
|
@ -974,4 +983,4 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
||||||
(type
|
(type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier))
|
||||||
(type
|
(type
|
||||||
(simple_type_identifier))))))
|
(simple_type_identifier)))))
|
||||||
|
|
|
||||||
|
|
@ -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'
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue