The Pico Concrete Grammar

(contents of the file ConcrSyn.pco)
<program> ::= <expression>
<expression> ::= <invocation>
<expression> ::= <invocation> : <expression>
<expression> ::= <invocation> := <expression>
<invocation> ::= <comparand>
<invocation> ::= <invocation> <comparator> <comparand>
<comparand> ::= <term>
<comparand> ::= <comparand> <adder> <term>
<term> ::= <factor>
<term> ::= <term> <multiplier> <factor>
<factor> ::= <reference>
<factor> ::= <factor> <power> <reference>
<reference> ::= <number>
<reference> ::= <fraction>
<reference> ::= <text>
<reference> ::= <variable>
<reference> ::= <prefix> 
<reference> ::= <application>
<reference> ::= <apply>
<reference> ::= <tabulation>
<reference> ::= <subexpression>
<reference> ::= <sequence>
<reference> ::= <table>
<prefix> ::= <operator> <reference>
<application> ::= <variable> ( )
<application> ::= <variable> ( <commalist> )
<apply> ::= <variable> @ <invocation>
<tabulation> ::= <name> [ <expression> ]
<subexpression> ::= ( <expression> )
<sequence> ::= { <semicolonlist> }
<table> ::= [ ]
<table> ::= [ <commalist> ]
<commalist> ::= <expression>
<commalist> ::= <expression> , <commalist>
<semicolonlist> ::= <expression>
<semicolonlist> ::= <expression> ; <semicolonlist>
<variable> ::= <name>
<variable> ::= <operator>
<operator> ::= <power>
<operator> ::= <multiplier>
<operator> ::= <adder>
<operator> ::= <comparator>
<scale> ::= #exponent# + <number>
<scale> ::= #exponent# - <number>
<scale> ::= #exponent# <number>
<number> ::= #digit#
<number> ::= #digit# <number>
<fraction> ::= <number> . <number> <scale>
<fraction> ::= <number> . <number>
<fraction> ::= <number> <scale>
<comparator> ::= #comparator# <operator>
<adder> ::= #adder# <operator>
<multiplier> ::= #multiplier# <operator>
<power> ::= #power# <operator>
<operator> ::= #operator#
<operator> ::= #operator# <operator>
<name> ::= #letter# <rest>
<rest> ::=
<rest> ::= #digit# <rest>
<rest> ::= #letter# <rest>
#letter# = { a ,..., z , A ,..., Z , _ }
#digit# = { 0 ,..., 9 }
#exponent# = { e , E }
#comparator# = { < , = , > }
#adder# = { + , - , | }
#multiplier# = { * , / , \ , & }
#power# = { ^ }
#operator# = #comparator# + #adder# +
 #multiplier# + #power#

Back to the metacircular evaluator

This page was made (with lots of hard work!) by Wolfgang De Meuter

AltStyle によって変換されたページ (->オリジナル) /