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
|
||||
(statement
|
||||
(import
|
||||
(simple_name_identifier)))
|
||||
(statement
|
||||
(simple_name_identifier))
|
||||
(import
|
||||
(simple_name_identifier)
|
||||
(simple_type_identifier)))
|
||||
(statement
|
||||
(simple_type_identifier))
|
||||
(import
|
||||
(simple_name_identifier)))
|
||||
(statement
|
||||
(simple_name_identifier))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(block
|
||||
|
|
@ -240,8 +236,7 @@ test_k 'n 'k : Int Int -> Bool = {
|
|||
(string_literal))
|
||||
(operator)
|
||||
(name_expression
|
||||
(simple_name_identifier))))))))))
|
||||
(statement
|
||||
(simple_name_identifier)))))))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(argument_name_identifier)
|
||||
|
|
@ -333,8 +328,7 @@ test_k 'n 'k : Int Int -> Bool = {
|
|||
(simple_name_identifier))
|
||||
(operator)
|
||||
(name_expression
|
||||
(simple_name_identifier))))))))
|
||||
(statement
|
||||
(simple_name_identifier)))))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(argument_name_identifier)
|
||||
|
|
@ -415,8 +409,7 @@ test_k 'n 'k : Int Int -> Bool = {
|
|||
(simple_name_identifier))))))
|
||||
(return
|
||||
(name_expression
|
||||
(simple_name_identifier))))))
|
||||
(statement
|
||||
(simple_name_identifier)))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(argument_name_identifier)
|
||||
|
|
@ -477,4 +470,4 @@ test_k 'n 'k : Int Int -> Bool = {
|
|||
(name_expression
|
||||
(simple_name_identifier))
|
||||
(operator)
|
||||
(number_literal))))))))
|
||||
(number_literal)))))))
|
||||
|
|
|
|||
|
|
@ -31,6 +31,13 @@ func = {
|
|||
} !!-> 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 ')
|
||||
@a is integer
|
||||
@b also integer
|
||||
|
|
@ -194,23 +201,18 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
--------------------------------------------------------------------------------
|
||||
|
||||
(source_file
|
||||
(statement
|
||||
(import
|
||||
(simple_name_identifier)))
|
||||
(statement
|
||||
(simple_name_identifier))
|
||||
(import
|
||||
(simple_name_identifier)))
|
||||
(statement
|
||||
(simple_name_identifier))
|
||||
(import
|
||||
(simple_name_identifier)
|
||||
(simple_name_identifier)
|
||||
(simple_name_identifier)
|
||||
(simple_name_identifier)))
|
||||
(statement
|
||||
(simple_name_identifier))
|
||||
(import
|
||||
(simple_name_identifier)
|
||||
(simple_name_identifier)))
|
||||
(statement
|
||||
(simple_name_identifier))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(block
|
||||
|
|
@ -295,8 +297,37 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_name_identifier)
|
||||
(simple_name_identifier)))
|
||||
(return
|
||||
(unit_literal))))))
|
||||
(statement
|
||||
(unit_literal)))))
|
||||
(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
|
||||
(definition_info)
|
||||
(annotation_info
|
||||
|
|
@ -311,8 +342,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(argument_name_identifier))
|
||||
(operator)
|
||||
(name_expression
|
||||
(argument_name_identifier)))))
|
||||
(statement
|
||||
(argument_name_identifier))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(annotation_info
|
||||
|
|
@ -352,8 +382,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(operator)
|
||||
(name_expression
|
||||
(simple_name_identifier)
|
||||
(argument_name_identifier)))))))
|
||||
(statement
|
||||
(argument_name_identifier))))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(block
|
||||
|
|
@ -530,8 +559,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(name_expression
|
||||
(operator)
|
||||
(number_literal)
|
||||
(number_literal)))))))
|
||||
(statement
|
||||
(number_literal))))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(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)))))
|
||||
(statement
|
||||
(simple_name_identifier))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(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)))))
|
||||
(statement
|
||||
(simple_name_identifier))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(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)))))
|
||||
(statement
|
||||
(simple_name_identifier))))
|
||||
(type_definition
|
||||
(simple_type_identifier)
|
||||
(tuple_type
|
||||
|
|
@ -567,8 +592,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_type_identifier))
|
||||
(annotation_identifier)
|
||||
(type
|
||||
(simple_type_identifier)))))
|
||||
(statement
|
||||
(simple_type_identifier))))
|
||||
(type_definition
|
||||
(simple_type_identifier)
|
||||
(variant_type
|
||||
|
|
@ -583,8 +607,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(tuple_type
|
||||
(annotation_identifier)
|
||||
(type
|
||||
(simple_type_identifier))))))
|
||||
(statement
|
||||
(simple_type_identifier)))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -649,8 +672,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(name_expression
|
||||
(simple_name_identifier))
|
||||
(operator)
|
||||
(bool_literal)))))))))
|
||||
(statement
|
||||
(bool_literal))))))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -715,8 +737,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(name_expression
|
||||
(simple_name_identifier))
|
||||
(operator)
|
||||
(bool_literal)))))))))
|
||||
(statement
|
||||
(bool_literal))))))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(argument_name_identifier)
|
||||
|
|
@ -724,8 +745,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_type_identifier)
|
||||
(type
|
||||
(argument_type_identifier)))
|
||||
(block)))
|
||||
(statement
|
||||
(block))
|
||||
(type_definition
|
||||
(definition_info)
|
||||
(simple_type_identifier)
|
||||
|
|
@ -751,8 +771,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(type
|
||||
(argument_type_identifier))
|
||||
(type
|
||||
(argument_type_identifier))))))
|
||||
(statement
|
||||
(argument_type_identifier)))))
|
||||
(type_definition
|
||||
(simple_type_identifier)
|
||||
(function_definition
|
||||
|
|
@ -773,8 +792,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_name_identifier)
|
||||
(argument_name_identifier)
|
||||
(name_expression
|
||||
(simple_name_identifier)))))
|
||||
(statement
|
||||
(simple_name_identifier))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(block
|
||||
|
|
@ -799,8 +817,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_type_identifier)
|
||||
(type
|
||||
(simple_type_identifier)))
|
||||
(simple_name_identifier)))))))
|
||||
(statement
|
||||
(simple_name_identifier))))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(block
|
||||
|
|
@ -839,8 +856,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_name_identifier)))
|
||||
(operator)
|
||||
(name_expression
|
||||
(simple_name_identifier))))))
|
||||
(statement
|
||||
(simple_name_identifier)))))
|
||||
(function_definition
|
||||
(simple_name_identifier)
|
||||
(block
|
||||
|
|
@ -851,8 +867,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(reference
|
||||
(access
|
||||
(simple_name_identifier)
|
||||
(number_literal))))))))
|
||||
(statement
|
||||
(number_literal)))))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -864,8 +879,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(argument_name_identifier))
|
||||
(name_expression
|
||||
(simple_name_identifier)
|
||||
(argument_name_identifier)))))
|
||||
(statement
|
||||
(argument_name_identifier))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -894,8 +908,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(argument_name_identifier))
|
||||
(case
|
||||
(reference
|
||||
(simple_name_identifier)))))))
|
||||
(statement
|
||||
(simple_name_identifier))))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -914,8 +927,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(simple_name_identifier)))
|
||||
(operator)
|
||||
(name_expression
|
||||
(simple_name_identifier)))))
|
||||
(statement
|
||||
(simple_name_identifier))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -927,8 +939,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(argument_name_identifier))
|
||||
(case
|
||||
(name_expression
|
||||
(simple_name_identifier))))))
|
||||
(statement
|
||||
(simple_name_identifier)))))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -946,8 +957,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(annotation_identifier)
|
||||
(argument_name_identifier)
|
||||
(annotation_identifier)
|
||||
(argument_name_identifier))))
|
||||
(statement
|
||||
(argument_name_identifier)))
|
||||
(function_definition
|
||||
(definition_info)
|
||||
(simple_name_identifier)
|
||||
|
|
@ -963,8 +973,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(type
|
||||
(simple_type_identifier))
|
||||
(argument_name_identifier)
|
||||
(argument_name_identifier))))
|
||||
(statement
|
||||
(argument_name_identifier)))
|
||||
(typeclass_definition
|
||||
(definition_info)
|
||||
(typeclass_identifier)
|
||||
|
|
@ -974,4 +983,4 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
|
|||
(type
|
||||
(simple_type_identifier))
|
||||
(type
|
||||
(simple_type_identifier))))))
|
||||
(simple_type_identifier)))))
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue