mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-05 22:48:42 +00:00
type_check_visitor first iteration, value, execution_visitor started
This commit is contained in:
parent
173d50672a
commit
890bd90eba
22 changed files with 481 additions and 452 deletions
|
|
@ -1,6 +1,6 @@
|
|||
namespace Employee {
|
||||
decl gen_employee : Unit -> Employee
|
||||
def gen_employee = {
|
||||
def gen_employee : a = {
|
||||
return
|
||||
$Employee
|
||||
& name = "John"
|
||||
|
|
|
|||
259
tests/match.lang
259
tests/match.lang
|
|
@ -1,12 +1,8 @@
|
|||
================================================================================
|
||||
Match
|
||||
================================================================================
|
||||
|
||||
decl fruit_cost : Fruit -> Int
|
||||
def fruit_cost : fruit = {
|
||||
return (match fruit with
|
||||
| $Banana -> 11
|
||||
| $Apple | $Orange -> 7)
|
||||
return (match fruit with
|
||||
| $Banana -> 11
|
||||
| $Apple | $Orange -> 7)
|
||||
}
|
||||
|
||||
decl amount_to_string : Int -> Bool -> String
|
||||
|
|
@ -19,252 +15,3 @@ def amount_to_string : x is_zero_separated = {
|
|||
| _ -> "Lots"
|
||||
return ans
|
||||
}
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(source_file
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(function_declaration
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(function_type
|
||||
(scoped_any_type
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier))))
|
||||
(scoped_any_type
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(function_definition_statement
|
||||
(function_definition
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(extended_name
|
||||
(name_identifier)))
|
||||
(superexpression
|
||||
(expression
|
||||
(prefixed_expression
|
||||
(block
|
||||
(block_statement
|
||||
(prefixed_expression
|
||||
(return_expression
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(scoped_statement
|
||||
(superexpression
|
||||
(flow_control
|
||||
(match
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(name_expression
|
||||
(extended_name
|
||||
(name_identifier))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(type_constructor_pattern
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(number_literal))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(type_constructor_pattern
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(type_constructor_pattern
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(number_literal))))))))))))))))))))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(function_declaration
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(function_type
|
||||
(scoped_any_type
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier))))
|
||||
(scoped_any_type
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier))))
|
||||
(scoped_any_type
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(function_definition_statement
|
||||
(function_definition
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(extended_name
|
||||
(name_identifier)))
|
||||
(superexpression
|
||||
(expression
|
||||
(prefixed_expression
|
||||
(block
|
||||
(block_statement
|
||||
(variable_definition_statement
|
||||
(any_name
|
||||
(annotated_name
|
||||
(extended_name
|
||||
(name_identifier))))
|
||||
(superexpression
|
||||
(flow_control
|
||||
(match
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(name_expression
|
||||
(extended_name
|
||||
(name_identifier))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(literal
|
||||
(number_literal)))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(name_expression
|
||||
(extended_name
|
||||
(name_identifier))))))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(string_literal))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(literal
|
||||
(number_literal))))
|
||||
(match_case
|
||||
(pattern
|
||||
(literal
|
||||
(number_literal))))
|
||||
(match_case
|
||||
(pattern
|
||||
(literal
|
||||
(number_literal))))
|
||||
(match_case
|
||||
(pattern
|
||||
(literal
|
||||
(number_literal))))
|
||||
(match_case
|
||||
(pattern
|
||||
(literal
|
||||
(number_literal)))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(string_literal))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(extended_name
|
||||
(name_identifier)))
|
||||
(expression
|
||||
(subexpression
|
||||
(function_call_expression
|
||||
(subexpression_token
|
||||
(scoped_statement
|
||||
(superexpression
|
||||
(expression
|
||||
(subexpression
|
||||
(binary_operator_expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(number_literal))))
|
||||
(operator)
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(number_literal))))))))))
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(subexpression_token
|
||||
(name_expression
|
||||
(extended_name
|
||||
(name_identifier)))))))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(string_literal))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(extended_name
|
||||
(name_identifier)))
|
||||
(expression
|
||||
(subexpression
|
||||
(function_call_expression
|
||||
(subexpression_token
|
||||
(scoped_statement
|
||||
(superexpression
|
||||
(expression
|
||||
(subexpression
|
||||
(binary_operator_expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(number_literal))))
|
||||
(operator)
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(number_literal))))))))))
|
||||
(extended_name
|
||||
(name_identifier))
|
||||
(subexpression_token
|
||||
(name_expression
|
||||
(extended_name
|
||||
(name_identifier)))))))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(string_literal))))))
|
||||
(match_case
|
||||
(pattern
|
||||
(extended_name
|
||||
(name_identifier)))
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(literal
|
||||
(string_literal)))))))))))
|
||||
(block_statement
|
||||
(prefixed_expression
|
||||
(return_expression
|
||||
(expression
|
||||
(subexpression
|
||||
(subexpression_token
|
||||
(name_expression
|
||||
(extended_name
|
||||
(name_identifier))))))))))))))))))
|
||||
|
|
|
|||
11
tests/test_code.lang
Normal file
11
tests/test_code.lang
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
basic String
|
||||
basic Int
|
||||
basic Unit
|
||||
|
||||
decl print : String -> Unit
|
||||
|
||||
decl func : String -> Int
|
||||
def func : s = {
|
||||
; print: s
|
||||
return 5
|
||||
}
|
||||
|
|
@ -1,7 +1,3 @@
|
|||
================================================================================
|
||||
Types
|
||||
================================================================================
|
||||
|
||||
alias T1 = Int
|
||||
|
||||
abstract (T2 : #A #B #C)
|
||||
|
|
@ -10,50 +6,3 @@ abstract (T2 : #A #B #C)
|
|||
let T2 = Int
|
||||
let T2 = Float
|
||||
let T2 = Complex
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(source_file
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(alias_definition_statement
|
||||
(type_identifier)
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(abstract_type_definition_statement
|
||||
(annotated_type
|
||||
(type_identifier)
|
||||
(parametrized_typeclass
|
||||
(typeclass_identifier))
|
||||
(parametrized_typeclass
|
||||
(typeclass_identifier))
|
||||
(parametrized_typeclass
|
||||
(typeclass_identifier))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(alias_definition_statement
|
||||
(type_identifier)
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(alias_definition_statement
|
||||
(type_identifier)
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier)))))))
|
||||
(source_statement
|
||||
(partition_statement
|
||||
(namespace_statement
|
||||
(alias_definition_statement
|
||||
(type_identifier)
|
||||
(type_expression
|
||||
(parametrized_type
|
||||
(type_identifier))))))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue