There is no definition of "CT_CASTABLE" ?
Trying to update the grammar used by this project on https://mingodad.github.io/parsertl-playground/playground/ I've noticed that the grammar/lex at "resources/grammar" do not seems to be able to parse the *.c3 files on this project.
Notable there is no definition for CT_CASTABLE anywhere in this repository (I mean a lexer definition for it like there is for CT_IS_CONST = $is_const).
This are the files that fail to parse with the current grammar/lex:
../../../c3c/lib/std/core/builtin_comparison.c3
^
syntax error, unexpected ',', expecting ')'
yyparse return 1
../../../c3c/lib/std/core/mem_allocator.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/lib/std/io/formatter.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/lib/std/io/stream.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/lib/std/math/math.random.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/test/test_suite/attributes/attribute_params.c3
^
syntax error, unexpected ')'
yyparse return 1
../../../c3c/test/test_suite/attributes/attribute_path.c3
^
syntax error, unexpected AT_IDENT, expecting IDENT or AT_TYPE_IDENT
yyparse return 1
../../../c3c/test/test_suite/attributes/call_attribute_error_eos.c3
^
syntax error, unexpected IDENT, expecting ';'
yyparse return 1
../../../c3c/test/test_suite/bitstruct/bitstruct_general.c3
^
syntax error, unexpected '{', expecting ':'
yyparse return 1
../../../c3c/test/test_suite/bitstruct/bitstruct_simple_err_decl.c3
^
syntax error, unexpected ';', expecting ':'
yyparse return 1
../../../c3c/test/test_suite/bitstruct/invalid_bitstruct_name_other_ident.c3
^
syntax error, unexpected IDENT, expecting TYPE_IDENT
yyparse return 1
../../../c3c/test/test_suite/bitstruct/invalid_empty_struct_union.c3
^
syntax error, unexpected '}'
yyparse return 1
../../../c3c/test/test_suite/bitstruct/missing_bitstruct_type.c3
^
syntax error, unexpected '{', expecting ':'
yyparse return 1
../../../c3c/test/test_suite/cast/cast_parse_fails2.c3
^
syntax error, unexpected '(', expecting IDENT or CT_IDENT
yyparse return 1
../../../c3c/test/test_suite/cast/cast_parse_fails.c3
^
syntax error, unexpected '('
yyparse return 1
../../../c3c/test/test_suite/compile_time/ct_switch_more_checks.c3
^
syntax error, unexpected DOTDOT
yyparse return 1
../../../c3c/test/test_suite/compile_time_introspection/defined_err.c3
^
syntax error, unexpected ')'
yyparse return 1
../../../c3c/test/test_suite/constants/byte_literal_fail_base64.c3
^
syntax error, unexpected STRING_LITERAL, expecting ';'
yyparse return 1
../../../c3c/test/test_suite/constants/byte_literal_fail_hex.c3
^
syntax error, unexpected STRING_LITERAL, expecting ';'
yyparse return 1
../../../c3c/test/test_suite/define/common.c3
^
syntax error, unexpected LGENPAR, expecting '='
yyparse return 1
../../../c3c/test/test_suite/define/define_name_errors.c3
^
syntax error, unexpected INT
yyparse return 1
../../../c3c/test/test_suite/define/test_at.c3
^
syntax error, unexpected AT_IDENT, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/dynamic/any_cast.c3
^
syntax error, unexpected ':', expecting '{'
yyparse return 1
../../../c3c/test/test_suite/dynamic/duplicate_definition.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/test/test_suite/dynamic/dynamic_mismatch.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/test/test_suite/dynamic/same_method_twice.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/test/test_suite/enumerations/missing_type.c3
^
syntax error, unexpected '('
yyparse return 1
../../../c3c/test/test_suite/errors/empty_fault.c3
^
syntax error, unexpected '}', expecting CONST_IDENT
yyparse return 1
../../../c3c/test/test_suite/errors/lone_try.c3
^
syntax error, unexpected TRY, expecting '}'
yyparse return 1
../../../c3c/test/test_suite/errors/optional_untyped_list.c3
^
syntax error, unexpected '!'
yyparse return 1
../../../c3c/test/test_suite/errors/try_unwrap_using_assert.c3
^
syntax error, unexpected TRY
yyparse return 1
../../../c3c/test/test_suite/errors/try_with_assign_to_failable.c3
^
syntax error, unexpected TRY, expecting '}'
yyparse return 1
../../../c3c/test/test_suite/errors/try_with_chained_unwrap_errors.c3
^
syntax error, unexpected '=', expecting ')'
yyparse return 1
../../../c3c/test/test_suite/errors/try_with_weird_stuff.c3
^
syntax error, unexpected INTEGER
yyparse return 1
../../../c3c/test/test_suite/expressions/addr_of_fails.c3
^
syntax error, unexpected ';'
yyparse return 1
../../../c3c/test/test_suite/expressions/casts/cast_failable.c3
^
syntax error, unexpected '!'
yyparse return 1
../../../c3c/test/test_suite/expressions/not_in_wrong_position.c3
^
syntax error, unexpected '~', expecting ')'
yyparse return 1
../../../c3c/test/test_suite/functions/body_argument_fail.c3
^
syntax error, unexpected ';', expecting ')' or ','
yyparse return 1
../../../c3c/test/test_suite/functions/failable_param.c3
^
syntax error, unexpected '!', expecting ')' or ','
yyparse return 1
../../../c3c/test/test_suite/functions/invalid_param.c3
^
syntax error, unexpected CONST_IDENT, expecting ')' or ','
yyparse return 1
../../../c3c/test/test_suite/functions/missing_first_paren.c3
^
syntax error, unexpected ')', expecting '('
yyparse return 1
../../../c3c/test/test_suite/functions/missing_fn.c3
^
syntax error, unexpected '(', expecting '=' or ';'
yyparse return 1
../../../c3c/test/test_suite/functions/param_with_comma_at_end.c3
^
syntax error, unexpected ')'
yyparse return 1
../../../c3c/test/test_suite/globals/misplaced_const.c3
^
syntax error, unexpected CONST_IDENT, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/globals/static_global.c3
^
syntax error, unexpected STATIC
yyparse return 1
../../../c3c/test/test_suite/import/import_error_multi.c3
^
syntax error, unexpected ';', expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/import/import_error_string.c3
^
syntax error, unexpected STRING_LITERAL, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/initialize/initialize_parse_error.c3
^
syntax error, unexpected STATIC
yyparse return 1
../../../c3c/test/test_suite/initialize/initialize_prio.c3
^
syntax error, unexpected ')'
yyparse return 1
../../../c3c/test/test_suite/lexing/invalid_hex_in_hexarray2.c3
^
syntax error, unexpected STRING_LITERAL, expecting SCOPE
yyparse return 1
../../../c3c/test/test_suite/lexing/invalid_hex_in_hexarray.c3
^
syntax error, unexpected STRING_LITERAL, expecting SCOPE
yyparse return 1
../../../c3c/test/test_suite/lexing/no_builtin.c3
^
syntax error, unexpected BUILTIN
yyparse return 1
../../../c3c/test/test_suite/literals/bad_bitwidth.c3
^
syntax error, unexpected IDENT, expecting ';'
yyparse return 1
../../../c3c/test/test_suite/literals/radix_numbers_errors.c3
^
syntax error, unexpected INTEGER
yyparse return 1
../../../c3c/test/test_suite/macros/macro_body_errors.c3
^
syntax error, unexpected ')', expecting AT_IDENT
yyparse return 1
../../../c3c/test/test_suite/module/missing_semi.c3
^
syntax error, unexpected INT, expecting ';'
yyparse return 1
../../../c3c/test/test_suite/module/module_bad_path_ident.c3
^
syntax error, unexpected CONST_IDENT, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/module/module_bad_path_invalid.c3
^
syntax error, unexpected AND_OP, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/module/module_bad_path_keyword.c3
^
syntax error, unexpected IF, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/module/module_error_string.c3
^
syntax error, unexpected STRING_LITERAL, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/module/module_start_bad_ident.c3
^
syntax error, unexpected CONST_IDENT, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/module/module_start_invalid.c3
^
syntax error, unexpected AND_OP, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/module/module_start_keyword.c3
^
syntax error, unexpected IF, expecting IDENT
yyparse return 1
../../../c3c/test/test_suite/regression/crash_on_right_paren_macro.c3
^
syntax error, unexpected CT_TYPE_IDENT, expecting ')'
yyparse return 1
../../../c3c/test/test_suite/slices/slice_len_error.c3
^
syntax error, unexpected ']'
yyparse return 1
../../../c3c/test/test_suite/statements/call_missing_paren.c3
^
syntax error, unexpected RETURN, expecting ')'
yyparse return 1
../../../c3c/test/test_suite/statements/do_without_compound.c3
^
syntax error, unexpected IDENT, expecting '{'
yyparse return 1
../../../c3c/test/test_suite/statements/if_single.c3
^
syntax error, unexpected ELSE, expecting '}'
yyparse return 1
../../../c3c/test/test_suite/struct/const_access_error.c3
^
syntax error, unexpected STRING_LITERAL
yyparse return 1
../../../c3c/test/test_suite/types/enum_ok.c3
^
syntax error, unexpected ')'
yyparse return 1
../../../c3c/test/test_suite/types/enum_parse_errors.c3
^
syntax error, unexpected '{', expecting ')' or ','
yyparse return 1
../../../c3c/test/test_suite/types/various.c3
^
syntax error, unexpected IDENT, expecting SCOPE
yyparse return 1
../../../c3c/test/test_suite/unicode/commenting-out.c3
^
syntax error, unexpected '(', expecting '=' or ';'
yyparse return 1
../../../c3c/test/test_suite/union/union_zero.c3
^
syntax error, unexpected '}'
yyparse return 1
../../../c3c/test/test_suite/variables/consts.c3
^
syntax error, unexpected IDENT, expecting CONST_IDENT or LVEC or '[' or '*'
yyparse return 1
../../../c3c/test/unit/regression/liveness_any.c3
^
syntax error, unexpected IDENT, expecting '('
yyparse return 1
../../../c3c/test/unit/stdlib/atomic_types.c3
^
syntax error, unexpected LGENPAR, expecting IDENT
yyparse return 1
../../../c3c/test/unit/stdlib/collections/copy_map.c3
^
syntax error, unexpected LGENPAR, expecting IDENT or CT_IDENT
yyparse return 1
../../../c3c/test/unit/stdlib/string_to_float.c3
^
syntax error, unexpected IDENT, expecting ')' or ','
yyparse return 1
The files in test/test_suite that don't end with .c3t may be tests for errors. So some of the above were false positives. I've fixed the bugs I could find. Please have a look at the latest in master.
Thank you ! It's working again !
Thank you for the report.
The grammar in resources/grammar/grammar.y seems to be outdated again:
Testing lib
../../../c3c/lib/std/ascii.c3 -> yyparse return 0
../../../c3c/lib/std/atomic.c3:170:10:
^
syntax error, unexpected CT_TYPE_IDENT, expecting CT_CASE or CT_DEFAULT
-> yyparse return 1
../../../c3c/lib/std/atomic_nolibc.c3 -> yyparse return 0
../../../c3c/lib/std/bits.c3 -> yyparse return 0
../../../c3c/lib/std/collections/anylist.c3:7:6:
^
syntax error, unexpected TYPE_IDENT, expecting SCOPE
-> yyparse return 1
../../../c3c/lib/std/collections/bitset.c3:6:6:
^
syntax error, unexpected TYPE_IDENT, expecting SCOPE
-> yyparse return 1
../../../c3c/lib/std/collections/elastic_array.c3:10:6:
^
syntax error, unexpected TYPE_IDENT, expecting SCOPE
-> yyparse return 1
../../../c3c/lib/std/collections/enummap.c3 -> yyparse return 0
../../../c3c/lib/std/collections/enumset.c3:11:6:
^
syntax error, unexpected TYPE_IDENT, expecting SCOPE
-> yyparse return 1
../../../c3c/lib/std/collections/hashmap.c3:78:6:
^
syntax error, unexpected VAR, expecting '('
-> yyparse return 1
../../../c3c/lib/std/collections/linkedlist.c3 -> yyparse return 0
../../../c3c/lib/std/collections/list.c3:7:6:
^
syntax error, unexpected TYPE_IDENT, expecting SCOPE
-> yyparse return 1
../../../c3c/lib/std/collections/list_common.c3 -> yyparse return 0
../../../c3c/lib/std/collections/maybe.c3 -> yyparse return 0
../../../c3c/lib/std/collections/object.c3"%s""%s"::192:8:
^
syntax error, unexpected ':', expecting CT_CASE or CT_DEFAULT
-> yyparse return 1
...
Thank you, I'll look into it.