mirror of
https://codeberg.org/ProgramSnail/tree-sitter-lang.git
synced 2025-12-11 09:08:48 +00:00
function type added
This commit is contained in:
parent
6b093311df
commit
754d207af5
3 changed files with 133 additions and 63 deletions
|
|
@ -257,14 +257,17 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
(simple_type
|
(simple_type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier)))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(block
|
(block
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(condition
|
(condition
|
||||||
|
|
@ -355,10 +358,12 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(block
|
(block
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(match
|
(match
|
||||||
|
|
@ -450,12 +455,14 @@ test_k 'n 'k : Int Int -> Bool = {
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(block
|
(block
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(condition
|
(condition
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
|
||||||
tuple_argument_test 'x : (A & B & C) = do_something;
|
tuple_argument_test 'x : (A & B & C) = do_something;
|
||||||
|
|
||||||
// ((A1 & A2) | B | C) same to Variant[Tuple[A1 A2] B C]
|
// ((A1 & A2) | B | C) same to Variant[Tuple[A1 A2] B C]
|
||||||
variant_argument_test 'x : ((A1 & A2) | B | C) = do_something;
|
variant_argument_test 'x : ( (A1 & A2) | B | C) = do_something;
|
||||||
|
|
||||||
literals_test = {
|
literals_test = {
|
||||||
%float_number_literal := 1.0f;
|
%float_number_literal := 1.0f;
|
||||||
|
|
@ -247,6 +247,10 @@ literals_test = {
|
||||||
%null_literal := null;
|
%null_literal := null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
array_argument_test 'x 'y : [[ Int ]] = do_something;
|
||||||
|
|
||||||
|
functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) = do_something;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(source_file
|
(source_file
|
||||||
|
|
@ -441,11 +445,13 @@ literals_test = {
|
||||||
(index_literal)))
|
(index_literal)))
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(annotation_identifier)
|
(function_type
|
||||||
(simple_type
|
(annotation_identifier)
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(match
|
(match
|
||||||
(name_expression
|
(name_expression
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
|
|
@ -783,10 +789,11 @@ literals_test = {
|
||||||
(info))
|
(info))
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(reference_type
|
||||||
(simple_type_identifier)
|
|
||||||
(simple_type
|
(simple_type
|
||||||
(argument_type_identifier)))
|
(simple_type_identifier)
|
||||||
|
(simple_type
|
||||||
|
(argument_type_identifier))))
|
||||||
(block
|
(block
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(match
|
(match
|
||||||
|
|
@ -856,10 +863,11 @@ literals_test = {
|
||||||
(info))
|
(info))
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(reference_type
|
||||||
(simple_type_identifier)
|
|
||||||
(simple_type
|
(simple_type
|
||||||
(argument_type_identifier)))
|
(simple_type_identifier)
|
||||||
|
(simple_type
|
||||||
|
(argument_type_identifier))))
|
||||||
(block
|
(block
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(match
|
(match
|
||||||
|
|
@ -1094,10 +1102,13 @@ literals_test = {
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(argument_type_identifier))
|
(reference_type
|
||||||
(simple_type
|
(simple_type
|
||||||
(argument_type_identifier))
|
(argument_type_identifier)))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(argument_type_identifier))))
|
||||||
(comma_expression
|
(comma_expression
|
||||||
(comma_expression
|
(comma_expression
|
||||||
(match
|
(match
|
||||||
|
|
@ -1150,12 +1161,16 @@ literals_test = {
|
||||||
(definition_info
|
(definition_info
|
||||||
(info))
|
(info))
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
(simple_type
|
(simple_type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier)))
|
||||||
(simple_type
|
(reference_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
|
(simple_type_identifier)))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(operator_expression
|
(operator_expression
|
||||||
(operator_expression
|
(operator_expression
|
||||||
(name_expression
|
(name_expression
|
||||||
|
|
@ -1172,8 +1187,9 @@ literals_test = {
|
||||||
(info))
|
(info))
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(reference_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
|
(simple_type_identifier)))
|
||||||
(match
|
(match
|
||||||
(name_expression
|
(name_expression
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
|
|
@ -1187,12 +1203,16 @@ literals_test = {
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
(simple_type
|
(simple_type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier)))
|
||||||
(simple_type
|
(reference_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
|
(simple_type_identifier)))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(constructor
|
(constructor
|
||||||
(simple_type
|
(simple_type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier))
|
||||||
|
|
@ -1207,12 +1227,16 @@ literals_test = {
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(reference_type
|
||||||
(simple_type
|
(simple_type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier)))
|
||||||
(simple_type
|
(reference_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
|
(simple_type_identifier)))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
(constructor
|
(constructor
|
||||||
(simple_type
|
(simple_type
|
||||||
(simple_type_identifier))
|
(simple_type_identifier))
|
||||||
|
|
@ -1227,10 +1251,12 @@ literals_test = {
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(function_definition
|
(function_definition
|
||||||
(simple_name_identifier)
|
(simple_name_identifier)
|
||||||
(simple_type
|
(function_type
|
||||||
(simple_type_identifier))
|
(simple_type
|
||||||
(simple_type
|
(simple_type_identifier))
|
||||||
(simple_type_identifier)))
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier)))))
|
||||||
(empty_lines)
|
(empty_lines)
|
||||||
(function_definition
|
(function_definition
|
||||||
(definition_info
|
(definition_info
|
||||||
|
|
@ -1454,4 +1480,37 @@ literals_test = {
|
||||||
(case
|
(case
|
||||||
(null_literal)))
|
(null_literal)))
|
||||||
(empty_lines)))
|
(empty_lines)))
|
||||||
|
(empty_lines)
|
||||||
|
(function_definition
|
||||||
|
(simple_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(array_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier)))
|
||||||
|
(name_expression
|
||||||
|
(simple_name_identifier)))
|
||||||
|
(empty_lines)
|
||||||
|
(function_definition
|
||||||
|
(simple_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(function_type
|
||||||
|
(function_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))))
|
||||||
|
(function_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier)))
|
||||||
|
(reference_type
|
||||||
|
(simple_type
|
||||||
|
(simple_type_identifier)))))
|
||||||
|
(name_expression
|
||||||
|
(simple_name_identifier)))
|
||||||
(empty_lines))
|
(empty_lines))
|
||||||
|
|
|
||||||
14
grammar.js
14
grammar.js
|
|
@ -53,11 +53,7 @@ module.exports = grammar({
|
||||||
)),
|
)),
|
||||||
optional(seq(
|
optional(seq(
|
||||||
':',
|
':',
|
||||||
repeat1(seq(
|
choice($.function_type, $._annotated_type),
|
||||||
optional($.annotation_identifier),
|
|
||||||
optional($._reference),
|
|
||||||
$._scoped_type,
|
|
||||||
)),
|
|
||||||
)),
|
)),
|
||||||
choice(seq('=', choice(prec(2, choice($.block, $.array)), seq($._super_expression, ';'))), ';'),
|
choice(seq('=', choice(prec(2, choice($.block, $.array)), seq($._super_expression, ';'))), ';'),
|
||||||
),
|
),
|
||||||
|
|
@ -226,6 +222,11 @@ module.exports = grammar({
|
||||||
repeat1(seq('&', $._annotated_type)),
|
repeat1(seq('&', $._annotated_type)),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
function_type: $ => seq(
|
||||||
|
$._annotated_type,
|
||||||
|
repeat1($._annotated_type),
|
||||||
|
),
|
||||||
|
|
||||||
// add annotations to in all types ??
|
// add annotations to in all types ??
|
||||||
_annotated_type: $ => seq(optional($.annotation_identifier), $._scoped_type),
|
_annotated_type: $ => seq(optional($.annotation_identifier), $._scoped_type),
|
||||||
|
|
||||||
|
|
@ -249,6 +250,7 @@ module.exports = grammar({
|
||||||
$.array_type,
|
$.array_type,
|
||||||
$.variant_type,
|
$.variant_type,
|
||||||
$.tuple_type,
|
$.tuple_type,
|
||||||
|
$.function_type,
|
||||||
),
|
),
|
||||||
|
|
||||||
_scoped_type: $ => choice(
|
_scoped_type: $ => choice(
|
||||||
|
|
@ -259,7 +261,9 @@ module.exports = grammar({
|
||||||
seq('(', choice(
|
seq('(', choice(
|
||||||
$.variant_type,
|
$.variant_type,
|
||||||
$.tuple_type,
|
$.tuple_type,
|
||||||
|
//$.function_type,
|
||||||
), ')'),
|
), ')'),
|
||||||
|
seq('((', $.function_type, '))'),
|
||||||
),
|
),
|
||||||
|
|
||||||
// --- comments
|
// --- comments
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue