C_sharp_strange_lib.ParserCopyright 2026, Dmitrii Kuznetsov
SPDX-License-Identifier: LGPL-3.0-or-later
Parser for C#-like language
Check if character can be part of a token (letter, digit, underscore)
val parse_int : Ast.val_type Angstrom.tParses integer literals
val parse_char : Ast.val_type Angstrom.tParses character literals (e.g., 'a')
val parse_bool : Ast.val_type Angstrom.tParses boolean literals (true/false)
val parse_val_string : Ast.val_type Angstrom.tParses string literals (e.g., "hello")
val parse_null : Ast.val_type Angstrom.tParses null literal
val parse_value : Ast.expr Angstrom.tParses any value literal as expression
val parse_id : Ast.ident Angstrom.tParses identifiers (must not be reserved words)
val parse_type_word : Ast.base_type Angstrom.tParses type keywords (int, char, bool, string)
val parse_base_type : Ast._type Angstrom.tParses base types (TypeInt, TypeChar, TypeBool, TypeString)
val parse_var_type : Ast.var_type Angstrom.tParses variable types (TypeVar of base_type)
val parse_method_type : Ast._type Angstrom.tParses method return types (including void)
val parse_modifiers : Ast.modifier list Angstrom.tParses zero or more modifiers (public, static, async)
val parse_ops : Ast.expr Angstrom.tMain expression parser with operator precedence
val parse_assign : Ast.expr Angstrom.tParses assignment expressions
val parse_id_expr : Ast.expr Angstrom.tParses identifier as expression
parse_call_expr arg parses function calls with given argument parser
val parse_decl : Ast.stmt Angstrom.tParses variable declarations
val parse_stmt_ops : Ast.stmt Angstrom.tParses expression statements
parse_if_else body parses if-else statements with given body parser
parse_for body parses for loops with given body parser
parse_while body parses while loops with given body parser
val parse_return : Ast.stmt Angstrom.tParses return statements
val parse_break : Ast.stmt Angstrom.tParses break statements
val parse_continue : Ast.stmt Angstrom.tParses continue statements
val parse_block : Ast.stmt Angstrom.tParses block statements (enclosed in {
}
)
val parse_var : Ast.var_decl Angstrom.tParses variable declarations (type + identifier)
val parse_field_sign :
(Ast.modifier list * Ast.var_type * Ast.ident * Ast.expr option) Angstrom.tParses field signatures (modifiers, type, identifier, optional initializer)
val parse_method_sign :
(Ast.modifier list * Ast._type * Ast.ident * Ast.params) Angstrom.tParses method signatures (modifiers, return type, identifier, parameters)
val parse_method_member : Ast.field Angstrom.tParses complete method definitions
val parse_field_member : Ast.field Angstrom.tParses complete field definitions
val parse_class_members : Ast.field list Angstrom.tParses class members (fields and methods) enclosed in braces
val parse_class : Ast.c_sharp_class Angstrom.tParses complete class definitions
val parse_prog : Ast.program Angstrom.tParses complete programs
apply_parser parser str applies parser to string and returns result
parse_option parser str tries to parse and returns option
Left-associative chaining combinator