/
ConcrSyn.pco
102 lines (102 loc) · 6.52 KB
/
ConcrSyn.pco
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
`*-----------------------------------*`
`* >>>Pico<<< *`
`* Theo D'Hondt *`
`* VUB Programming Technology Lab *`
`* ©1997 *`
`*-----------------------------------*`
`------------------------------------------------concrete-syntax-`
` <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# `
`------------------------------------------------concrete-syntax-`