モノイド的構文解析言語 MonParser (C# 形式 バージョン 0.2)
MonParser (BNF 形式)の構文解析
「par」はパーサーを表すクラス、「syn」は構文木を表すクラスです。
par str(string s) => par.StringRegExp(s); par st(string s) => par.String(s); par opr(string s) => par.OperatorRegExp(s); par op(string s) => par.Operator(s); par string_ => str(@""".*"""); par operator_ => str(@"'.*'"); par identifier => str(@"[A-Za-z_][A-Za-z0-9_]*"); par constructor => str(@"[A-Za-z_][A-Za-z0-9_]*"); par term => st("(") & expression & st(")") | string_ | operator_ | identifier | constructor; par unary_operator => op("*") | op("+"); par unary_expression => term > unary_operator ^ syn.UnaryExpression; par conjunction => term >> st("&") ^ syn.Conjunction; par assoc_operator => op("&*") | op("*&"); par assoc => conjunction | conjunction & assoc_operator & operator_ ^ syn.AssocExpression; par construction => assoc | assoc & st("->") & constructor ^ syn.Construction; par expression => construction >> st("|") ^ syn.Expression; par expression_statement => expression ^ syn.ExpressionStatement; par definition => st("def") & identifier & st("=") & expression ^ syn.Definition; par statement => definition | expression_statement; par program => statement >> st(";") ^ syn.Program_;


