Arithmetic.ebnf 1.19 KB
Newer Older
eckhart's avatar
eckhart committed
1
2
3
4
5
6
7
8
9
10
11
12
# Arithmetic-grammar

#######################################################################
#
#  EBNF-Directives
#
#######################################################################

@ whitespace  = vertical        # implicit whitespace, includes any number of line feeds
@ literalws   = right           # literals have implicit whitespace on the right hand side
@ comment     = /#.*/           # comments range from a '#'-character to the end of the line
@ ignorecase  = False           # literals and regular expressions are case-sensitive
Eckhart Arnold's avatar
Eckhart Arnold committed
13
@ drop        = whitespace      # drop anonymous whitespace
eckhart's avatar
eckhart committed
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#######################################################################
#
#  Structure and Components
#
#######################################################################

expression = term  { ("+" | "-") term}
term       = factor  { ("*" | "/") factor}
factor     = [/-/] ( NUMBER | VARIABLE | group ) { VARIABLE | group }
group      = "(" expression ")"

#######################################################################
#
#  Regular Expressions
#
#######################################################################

NUMBER     = /(?:0|(?:[1-9]\d*))(?:\.\d+)?/~
VARIABLE   = /[A-Za-z]/~