モノイド的構文解析言語 MonParser - MonParser の構文解析
MonParser の構文を MonParser で書きます。
def string = /".*"/; def operator = /'.*'/; def identifier = /[A-Za-z_][A-Za-z0-9_]*/; def constructor = /[A-Za-z_][A-Za-z0-9_]*/; def term = "(" & expression & ")" | string | operator | identifier | constructor; def unary_operator = '*' | '+'; def unary_expression = term | term & unary_operator ->UnaryExpression; def conjunction = unary_expression &* "&" -> Conjunction; def assoc_operator = '&*' | '*&'; def assoc = conjunction | conjunction & assoc_operator & operator -> AssocExpression; def construction = assoc | assoc & '->' & constructor -> Construction; def expression = construction &* "|" -> Expression; def expression_statement = expression -> ExpressionStatement ; def definition = "def" & identifier & "=" & expression -> Definition; def statement = definition | expression_statement; def program = statement &* ";" -> Program; program


