C# Class Lens.Parser.LensParser

Datei anzeigen Open project: impworks/lens Class Usage Examples

Public Methods

Method Description
LensParser ( IEnumerable lexems ) : System.Collections.Generic

Private Methods

Method Description
parseAccessor ( ) : Lens.SyntaxTree.NodeBase

accessor = accessor_idx | accessor_mbr

parseAccessorIdx ( ) : Lens.SyntaxTree.Expressions.GetIndexNode

accessor_idx = "[" line_expr "]"

parseAccessorMbr ( ) : Lens.SyntaxTree.Expressions.GetMemberNode

accessor_mbr = "." identifier [ type_args ]

parseAtom ( ) : Lens.SyntaxTree.NodeBase

atom = literal | get_id_expr | get_stmbr_expr | new_collection_expr | paren_expr

parseBlock ( ) : CodeBlockNode

block = local_stmt_list | local_stmt

parseBlockExpr ( ) : Lens.SyntaxTree.NodeBase

block_expr = if_block | while_block | for_block | using_block | try_stmt | match_block | new_block_expr | invoke_block_expr | invoke_block_pass_expr | lambda_block_expr

parseBool ( ) : BooleanNode
parseCatchStmt ( ) : Lens.SyntaxTree.ControlFlow.CatchNode

catch_stmt = "catch" [ identifier ":" type ] block

parseCatchStmtList ( ) : IEnumerable

catch_stmt_list = catch_stmt { catch_stmt }

parseChar ( ) : CharNode
parseDecimal ( ) : DecimalNode
parseDefaultExpr ( ) : DefaultOperatorNode

default_expr = "default" type

parseDouble ( ) : DoubleNode
parseExpr ( ) : NodeBase

expr = block_expr | line_expr

parseFinallyStmt ( ) : CodeBlockNode

finally_stmt = "finally" block

parseFloat ( ) : FloatNode
parseForBlock ( ) : ForeachNode

for_block = for_header block

parseForHeader ( ) : ForeachNode

for_block = "for" identifier "in" line_expr [ ".." line_expr ] "do"

parseForLine ( ) : ForeachNode

for_line = for_header line_stmt

parseFunArgs ( bool required = false ) : List

fun_args = fun_single_arg | fun_many_args

parseFunDef ( ) : FunctionNode

fun_def = [ "pure" ] "fun" identifier [ ":" type ] fun_args "->" block

parseFunManyArgs ( bool required = false ) : List

fun_arg_list = "(" { fun_single_arg } ")"

parseFunSingleArg ( bool required = false ) : FunctionArgument

fun_arg = identifier [ ":" [ "ref" ] type [ "... " ] ]

parseGetExpr ( ) : NodeBase

get_expr = atom { accessor }

parseGetIdExpr ( ) : GetIdentifierNode

get_id_expr = identifier [ type_args ]

parseGetStmbrExpr ( ) : GetMemberNode

get_stmbr_expr = type "::" identifier [ type_args ]

parseIfBlock ( ) : IfNode

if_block = if_header block [ NL "else" block ]

parseIfHeader ( ) : IfNode

if_header = "if" line_expr "then"

parseIfLine ( ) : IfNode

if_line = if_header line_stmt [ "else" line_stmt ]

parseInitDictExpr ( ) : NodeBase>.KeyValuePair

init_dict_expr = line_expr "=>" line_expr

parseInitExprBlock ( ) : IEnumerable

init_expr_block = INDENT line_expr { NL line_expr } DEDENT

parseInitExprDictBlock ( ) : NodeBase>>.IEnumerable

init_expr_dict_block = INDENT init_dict_expr { NL init_dict_expr } DEDENT

parseInitExprDictLine ( ) : NodeBase>>.IEnumerable

init_expr_dict_line = init_dict_expr { ";" init_dict_expr }

parseInitExprLine ( ) : IEnumerable

init_expr_line = line_expr { ";" line_expr }

parseInt ( ) : IntNode
parseInvokeBlockArg ( ) : NodeBase

invoke_block_arg = "<|" ( ref_arg | expr )

parseInvokeBlockArgs ( ) : IEnumerable

invoke_block_args = INDENT invoke_block_arg { NL invoke_block_arg } DEDENT

parseInvokeBlockExpr ( ) : NodeBase

invoke_block_expr = line_expr [ INDENT invoke_pass { NL invoke_pass } DEDENT ]

parseInvokeBlockPassExpr ( ) : InvocationNode

parseInvokeLineArg ( ) : NodeBase

invoke_line_arg = ref_arg | get_expr

parseInvokeLineArgs ( ) : IEnumerable

invoke_line_args = { invoke_line_arg }

parseInvokePass ( ) : InvocationNode

invoke_pass = "|>" identifier [ type_args ] ( invoke_block_args | invoke_line_args )

parseLambdaBlockExpr ( ) : LambdaNode

lambda_block_expr = [ fun_args ] "->" block

parseLambdaLineExpr ( ) : LambdaNode

lambda_line_expr = [ fun_args ] "->" line_expr

parseLetStmt ( ) : LetNode

let_stmt = "let" identifier "=" expr

parseLineBaseExpr ( ) : NodeBase

line_base_expr = line_invoke_base_expr | get_expr

parseLineExpr ( ) : NodeBase

line_expr = if_line | while_line | for_line | using_line | throw_stmt | new_object_line | typeop_expr | line_typecheck_expr

parseLineInvokeBaseExpr ( ) : NodeBase

line_invoke_base_expr = get_expr [ invoke_line_args ]

parseLineOpExpr ( ) : NodeBase

line_op_expr = [ unary_op ] line_base_expr { binary_op line_base_expr }

parseLineStmt ( ) : NodeBase

line_stmt = set_stmt | line_expr

parseLineTypecheckExpr ( ) : NodeBase

line_typecheck_expr = line_op_expr [ typecheck_op_expr ]

parseLiteral ( ) : NodeBase

literal = unit | null | bool | int | long | float | double | decimal | char | string

parseLocalStmt ( ) : NodeBase

local_stmt = name_def_stmt | set_stmt | expr

parseLocalStmtList ( ) : IEnumerable

local_stmt_list = INDENT local_stmt { NL local_stmt } DEDENT

parseLong ( ) : LongNode
parseLvalueExpr ( ) : NodeBase

lvalue_expr = lvalue_name_expr | lvalue_paren_expr

parseLvalueIdExpr ( ) : GetIdentifierNode

lvalue_id_expr = identifier

parseLvalueName ( ) : NodeBase

lvalue_name = lvalue_stmbr_expr | lvalue_id_expr

parseLvalueNameExpr ( ) : NodeBase

lvalue_name_expr = lvalue_name { accessor }

parseLvalueParenExpr ( ) : NodeBase

lvalue_paren_expr = paren_expr accessor { accessor }

parseLvalueStmbrExpr ( ) : GetMemberNode

lvalue_stmbr_expr = type "::" identifier

parseMain ( ) : IEnumerable

main = stmt { NL stmt } EOF

parseMatchBlock ( ) : MatchNode

match_block = "match" line_expr "with" INDENT { match_stmt } DEDENT

parseMatchRule ( ) : MatchRuleBase

match_rule = rule_generic [ rule_keyvalue ]

parseMatchRules ( ) : IEnumerable

match_rules = match_rule { [ NL ] "|" match_rule }

parseMatchStmt ( ) : MatchStatementNode

match_stmt = "case" match_rules [ "when" line_expr ] "then" block

parseNameDefStmt ( ) : NameDeclarationNodeBase

name_def_stmt = var_stmt | let_stmt

parseNamespace ( ) : TypeSignature

namespace = identifier { "." identifier }

parseNewArrayBlock ( ) : NewArrayNode

new_array_block = "[" init_expr_block "]"

parseNewArrayLine ( ) : NewArrayNode

new_array_line = "[" init_expr_block "]"

parseNewBlockExpr ( ) : NodeBase

new_block_expr = "new" new_tuple_block | new_array_block | new_list_block | new_dict_block | new_object_block

parseNewCollectionExpr ( ) : NodeBase

new_collection_expr = "new" ( new_tuple_line | new_list_line | new_array_line | new_dict_line )

parseNewDictBlock ( ) : NewDictionaryNode

new_dict_block = "{" init_dict_expr_block "}"

parseNewDictLine ( ) : NewDictionaryNode

new_dict_line = "{" init_dict_expr_block "}"

parseNewListBlock ( ) : NewListNode

new_list_block = "[" "[" init_expr_block "]" "]"

parseNewListLine ( ) : NewListNode

new_list_line = "[" "[" init_expr_block "]" "]"

parseNewObjArrayLine ( ) : NewObjectArrayNode

new_objarray_line = type "[" line_expr "]"

parseNewObjectBlock ( ) : NewObjectNode

new_object_block = type invoke_block_args

parseNewObjectExpr ( ) : NodeBase

new_line_expr = "new" ( new_objarray_line | new_object_block )

parseNewObjectLine ( ) : NewObjectNode

new_object_line = type invoke_line_args

parseNewTupleBlock ( ) : NewTupleNode

new_tuple_block = "(" init_expr_block ")"

parseNewTupleLine ( ) : NewTupleNode

new_tuple_line = "(" init_expr_line ")"

parseNull ( ) : NullNode
parseParenExpr ( ) : NodeBase

paren_expr = "(" ( lambda_line_expr | line_expr ) ")"

parseRecordDef ( ) : RecordDefinitionNode

record_def = "record" identifier INDENT record_stmt { NL record_stmt } DEDENT

parseRecordStmt ( ) : RecordField

record_stmt = identifier ":" type

parseRefArg ( ) : NodeBase

ref_arg = "ref" lvalue_expr | "(" "ref" lvalue_expr ")"

parseRegex ( ) : MatchRegexNode

rule_regex = regex

parseRuleArray ( ) : MatchRuleBase

rule_array = "[" [ rule_array_item { ";" rule_array_item } ] "]"

parseRuleArrayItem ( ) : MatchRuleBase

rule_array_item = rule_subsequence | match_rule

parseRuleGeneric ( ) : MatchRuleBase

rule_generic = rule_tuple | rule_array | rule_regex | rule_record | rule_type | rule_range | rule_literal | rule_name

parseRuleKeyValue ( ) : MatchKeyValueRule

rule_keyvalue = "=>" rule_generic

parseRuleLiteral ( ) : MatchLiteralRule

rule_literal = literal

parseRuleName ( ) : MatchNameRule

rule_name = identifier [ ":" type ]

parseRuleRange ( ) : MatchRangeRule

rule_range = rule_literal ".." rule_literal

parseRuleRecord ( ) : MatchRecordRule

rule_record = identifier "(" rule_record_var { ";" rule_record_var } ")"

parseRuleRecordVar ( ) : MatchRecordField

rule_record_var = identifier "=" match_rule

parseRuleSubsequence ( ) : MatchNameRule

rule_subsequence = "..." identifier

parseRuleTuple ( ) : MatchTupleRule

rule_tuple = "(" match_rule { ";" match_rule } ")"

parseRuleType ( ) : MatchTypeRule

rule_type = identifier "of" match_rule

parseSetAnyStmt ( ) : NodeBase

set_any_stmt = lvalue_expr assignment_op expr

parseSetIdStmt ( ) : NodeBase

set_id_stmt = identifier assignment_op expr

parseSetStmbrStmt ( ) : NodeBase

set_stmbr_stmt = type "::" identifier assignment_op expr

parseSetStmt ( ) : NodeBase

set_stmt = set_id_stmt | set_stmbr_stmt | set_any_stmt

parseStmt ( ) : NodeBase

stmt = using | record_def | type_def | fun_def | local_stmt

parseString ( ) : StringNode
parseThrowStmt ( ) : ThrowNode

throw_stmt = "throw" [ line_expr ]

parseTryStmt ( ) : TryNode

try_stmt = "try" block catch_stmt_list [ finally_stmt ]

parseType ( ) : TypeSignature

type = namespace [ type_args ] { "[]" | "?" | "~" }

parseTypeArgs ( ) : List

type_args = "<" type { "," type } ">"

parseTypeDef ( ) : TypeDefinitionNode

type_def = "type" identifier INDENT type_stmt { type_stmt } DEDENT

parseTypeStmt ( ) : TypeLabel

type_stmt = identifier [ "of" type ]

parseTypecheckOpExpr ( ) : NodeBase

typecheck_op_expr = "as" type | "is" type

parseTypeofExpr ( ) : TypeofOperatorNode

typeof_expr = "typeof" type

parseTypeopExpr ( ) : NodeBase

typeop_expr = default_expr | typeof_expr

parseUnit ( ) : UnitNode
parseUsing ( ) : UseNode

using = "using" namespace NL

parseUsingBlock ( ) : UsingNode

using_block = using_header block

parseUsingHeader ( ) : UsingNode

using_header = "using" [ identifier "=" ] line_expr "do"

parseUsingLine ( ) : UsingNode

using_line = using_header line_stmt

parseVarStmt ( ) : VarNode

var_stmt = "var" identifier ( "=" expr | ":" type )

parseWhileBlock ( ) : WhileNode

while_block = while_header block

parseWhileHeader ( ) : WhileNode

while_header = "while" line_expr "do"

parseWhileLine ( ) : WhileNode

while_line = while_header line_stmt

Method Details

LensParser() public method

public LensParser ( IEnumerable lexems ) : System.Collections.Generic
lexems IEnumerable
return System.Collections.Generic