empty_lines node, fixes

This commit is contained in:
ProgramSnail 2023-07-25 19:08:23 +03:00
parent 9b86acea53
commit 1c19b47199
4 changed files with 75 additions and 7 deletions

View file

@ -69,6 +69,7 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_type_identifier))
(import
(simple_name_identifier))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -237,6 +238,7 @@ test_k 'n 'k : Int Int -> Bool = {
(operator)
(name_expression
(simple_name_identifier)))))))))
(empty_lines)
(function_definition
(simple_name_identifier)
(argument_name_identifier)
@ -273,6 +275,7 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_type_identifier))
(simple_name_identifier)
(argument_name_identifier)))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -310,6 +313,7 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier)
(simple_name_identifier)
(argument_name_identifier))))
(empty_lines)
(return
(operator_expression
(operator_expression
@ -329,6 +333,7 @@ test_k 'n 'k : Int Int -> Bool = {
(operator)
(name_expression
(simple_name_identifier)))))))
(empty_lines)
(function_definition
(simple_name_identifier)
(argument_name_identifier)
@ -410,6 +415,7 @@ test_k 'n 'k : Int Int -> Bool = {
(return
(name_expression
(simple_name_identifier)))))
(empty_lines)
(function_definition
(simple_name_identifier)
(argument_name_identifier)
@ -429,6 +435,7 @@ test_k 'n 'k : Int Int -> Bool = {
(number_literal))
(return
(bool_literal)))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -461,6 +468,7 @@ test_k 'n 'k : Int Int -> Bool = {
(operator)
(name_expression
(simple_name_identifier)))))
(empty_lines)
(return
(operator_expression
(name_expression

View file

@ -94,7 +94,7 @@ func_2 = {
maybe_something!;
// open optional: if null then return default value (operator)
%x := maybe_something ?| value
%x := maybe_something ?| value;
%y := Fruit @apple ();
@ -224,11 +224,14 @@ parse_number : Unit! = {
--------------------------------------------------------------------------------
(source_file
(empty_lines)
(import
(simple_name_identifier))
(empty_lines)
(import
(placeholder)
(simple_name_identifier))
(empty_lines)
(import
(simple_name_identifier)
(simple_name_identifier)
@ -237,9 +240,11 @@ parse_number : Unit! = {
(import
(simple_name_identifier)
(simple_name_identifier))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(loop
(block
(match
@ -255,6 +260,7 @@ parse_number : Unit! = {
(operator)
(char_literal))
(loop_control))))
(empty_lines)
(loop
(operator_expression
(name_expression
@ -265,6 +271,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(loop
(name_definition
(simple_name_identifier))
@ -276,6 +283,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(string_literal))))
(empty_lines)
(condition
(operator_expression
(operator_expression
@ -322,6 +330,7 @@ parse_number : Unit! = {
(simple_name_identifier)))
(return
(unit_literal)))))
(empty_lines)
(function_definition
(definition_info
(info)
@ -354,6 +363,7 @@ parse_number : Unit! = {
(case
(placeholder)
(null_literal))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -372,6 +382,7 @@ parse_number : Unit! = {
(operator)
(name_expression
(argument_name_identifier))))
(empty_lines)
(function_definition
(definition_info
(info)
@ -416,6 +427,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(argument_name_identifier))))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -425,6 +437,7 @@ parse_number : Unit! = {
(case
(name_expression
(simple_name_identifier))))
(empty_lines)
(match
(operator_expression
(name_definition
@ -436,6 +449,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -449,12 +463,14 @@ parse_number : Unit! = {
(operator)
(name_expression
(argument_name_identifier))))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(lambda
(number_literal))))
(empty_lines)
(match
(name_expression
(simple_name_identifier))
@ -488,6 +504,7 @@ parse_number : Unit! = {
(case
(placeholder)
(string_literal)))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -499,6 +516,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(simple_name_identifier))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -511,6 +529,7 @@ parse_number : Unit! = {
(placeholder)
(name_expression
(simple_name_identifier))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -522,6 +541,7 @@ parse_number : Unit! = {
(string_literal)
(annotation_identifier)
(float_number_literal))))
(empty_lines)
(match
(suffix_expression
(name_definition
@ -531,6 +551,7 @@ parse_number : Unit! = {
(simple_name_identifier))
(name_expression
(simple_name_identifier))))
(empty_lines)
(match
(suffix_expression
(name_definition
@ -538,6 +559,7 @@ parse_number : Unit! = {
(case
(name_expression
(simple_name_identifier))))
(empty_lines)
(match
(suffix_expression
(name_definition
@ -545,10 +567,13 @@ parse_number : Unit! = {
(case
(name_expression
(simple_name_identifier))))
(empty_lines)
(suffix_expression
(simple_name_identifier))
(empty_lines)
(suffix_expression
(simple_name_identifier))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -558,15 +583,18 @@ parse_number : Unit! = {
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)
(name_definition
(simple_name_identifier)))))
(simple_name_identifier)))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(constructor
(type
(simple_type_identifier))
(annotation_identifier)
(unit_literal))))
(empty_lines)
(match
(name_expression
(simple_name_identifier))
@ -591,6 +619,7 @@ parse_number : Unit! = {
(annotation_identifier)
(unit_literal))
(string_literal)))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -599,6 +628,7 @@ parse_number : Unit! = {
(operator)
(number_literal)
(number_literal))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -615,6 +645,7 @@ parse_number : Unit! = {
(tuple_access
(simple_name_identifier)
(number_literal)))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -628,6 +659,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(argument_name_identifier))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -636,6 +668,7 @@ parse_number : Unit! = {
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -644,6 +677,7 @@ parse_number : Unit! = {
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -652,6 +686,7 @@ parse_number : Unit! = {
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(type_definition
(simple_type_identifier)
(variant_type
@ -662,6 +697,7 @@ parse_number : Unit! = {
(annotation_identifier)
(type
(simple_type_identifier)))))
(empty_lines)
(type_definition
(simple_type_identifier)
(variant_type
@ -677,6 +713,7 @@ parse_number : Unit! = {
(annotation_identifier)
(type
(simple_type_identifier)))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -743,6 +780,7 @@ parse_number : Unit! = {
(simple_name_identifier))
(operator)
(bool_literal))))))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -809,6 +847,7 @@ parse_number : Unit! = {
(simple_name_identifier))
(operator)
(bool_literal))))))))
(empty_lines)
(type_definition
(definition_info
(info)
@ -838,6 +877,7 @@ parse_number : Unit! = {
(argument_type_identifier))
(type
(argument_type_identifier))))))
(empty_lines)
(type_definition
(simple_type_identifier)
(function_definition
@ -859,6 +899,7 @@ parse_number : Unit! = {
(argument_name_identifier)
(name_expression
(simple_name_identifier))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -884,6 +925,7 @@ parse_number : Unit! = {
(type
(simple_type_identifier)))
(simple_name_identifier))))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -923,6 +965,7 @@ parse_number : Unit! = {
(operator)
(name_expression
(simple_name_identifier)))))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
@ -934,6 +977,8 @@ parse_number : Unit! = {
(array_access
(simple_name_identifier)
(number_literal)))))))
(empty_lines)
(empty_lines)
(function_definition
(definition_info
(info))
@ -947,6 +992,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(argument_name_identifier))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -977,6 +1023,7 @@ parse_number : Unit! = {
(case
(reference_expression
(simple_name_identifier))))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -1003,6 +1050,7 @@ parse_number : Unit! = {
(case
(reference_expression
(simple_name_identifier))))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -1023,6 +1071,7 @@ parse_number : Unit! = {
(operator)
(name_expression
(simple_name_identifier))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -1036,6 +1085,7 @@ parse_number : Unit! = {
(case
(name_expression
(simple_name_identifier)))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -1055,6 +1105,7 @@ parse_number : Unit! = {
(argument_name_identifier)
(annotation_identifier)
(argument_name_identifier)))
(empty_lines)
(function_definition
(definition_info
(info))
@ -1072,6 +1123,7 @@ parse_number : Unit! = {
(simple_type_identifier))
(argument_name_identifier)
(argument_name_identifier)))
(empty_lines)
(typeclass_definition
(definition_info
(info))
@ -1083,6 +1135,7 @@ parse_number : Unit! = {
(simple_type_identifier))
(type
(simple_type_identifier))))
(empty_lines)
(function_definition
(definition_info
(info))
@ -1102,6 +1155,7 @@ parse_number : Unit! = {
(name_expression
(simple_name_identifier)
(string_literal)))))
(empty_lines)
(function_definition
(definition_info
(info))

View file

@ -9,6 +9,7 @@ statement: import
| type_definition
| function_definition
| typeclass_definition
| EMPTY_LINES
;
import: ('::' | 'import') (SIMPLE_NAME_IDENTIFIER | '_') ('=' SIMPLE_NAME_IDENTIFIER)?
@ -56,7 +57,7 @@ operator_expression: /* prec left ?? */
| /* prec 1 */ expression OPERATOR_TAIL3 expression
;
block: '{' (super_expression ';')* '}' ;
block: '{' ((super_expression ';') | EMPTY_LINES)* '}' ;
array: '[[' (scoped_expression)+ ']]' ;
@ -144,6 +145,8 @@ literal: FLOAT_NUMBER_LITERAL
DEFINITION_INFO : : ': ' ([^\n]*)+ ;
ANNOTATION_INFO : ANNOTATION_IDENTIFIER [^\n]* ;
EMPTY_LINES '\n' ('\n')+
LINE_COMMENT : '#!' [^\n]* -> skip ;
LINE_COMMENT : '//' [^\n]* -> skip ;
BLOCK_COMMENT : '\*' ([^*] |('\*' [^/]))* '*/' -> skip ;

View file

@ -21,6 +21,7 @@ module.exports = grammar({
$.type_definition,
$.function_definition,
$.typeclass_definition,
$.empty_lines,
),
import: $ => seq(
@ -128,7 +129,7 @@ module.exports = grammar({
// --- continers
block: $ => seq('{', repeat(seq($._super_expression, ';')), '}'),
block: $ => seq('{', repeat(choice(seq($._super_expression, ';'), $.empty_lines)), '}'),
array: $ => seq('[[', repeat1($._scoped_expression), ']]'),
@ -239,10 +240,12 @@ module.exports = grammar({
// --- comments
definition_info: $ => repeat1(seq(': ', $.info)),
annotation_info: $ => seq($.annotation_identifier, $.info),
annotation_info: $ => seq($.annotation_identifier, ' ', $.info),
info: $ => /[^\n]*/,
empty_lines: $ => /\n\n+/,
_exec_comment: $ => token(seq('#!', /[^\n]*/)),
_line_comment: $ => token(seq('//', /[^\n]*/)),
_block_comment: $ => token(seq('/*', /([^*]|(\*[^/]))*/, '*/')),