From 6d2556e527db748b6b6bee3298ea97f83326c1c2 Mon Sep 17 00:00:00 2001 From: sbrandt Date: Sat, 27 Jul 2013 23:25:38 +0000 Subject: Added parfile peg git-svn-id: http://svn.cactuscode.org/flesh/trunk@5036 17b73243-c579-4c4c-a9d2-2d5706c11dac --- src/piraha/pegs/par.peg | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/piraha/pegs/par.peg diff --git a/src/piraha/pegs/par.peg b/src/piraha/pegs/par.peg new file mode 100644 index 00000000..b6fe0af4 --- /dev/null +++ b/src/piraha/pegs/par.peg @@ -0,0 +1,41 @@ +skipper = ([ \t\r\n]|\#.*)* +# comment +skipeol = ([ \t\r]|\#.*)*($|\n) +any = [^] +stringcomment = #.* +stringparser = ^({stringcomment}|{var}|{name}|{any})*$ +# Note that / occurs in some par files. It is my +# feeling that this should require quote marks. +name = [a-zA-Z][a-zA-Z0-9_]* +dname = [0-9][a-zA-Z_]{2,} +inquot = ({var}|\\.|[^\\"])* +fname = \.?/[-\./0-9a-zA-Z_]+ +quot = "{inquot}"|{fname} +num = ([0-9]+(\.[0-9]*|)|\.[0-9]+)([ed][+-]?[0-9]+|) +env = ENV\{{name}\} +var = \$({env}|{name}|\{{name}\}) +powexpr = {value}( \*\* {value})? +mulop = [*/%] +mexpr = {powexpr}( {mulop} {powexpr})* +addop = [+-] +aexpr = {mexpr}( {addop} {mexpr})* +compop = [<>]=? +compexpr = {aexpr}( {compop} {aexpr})? +eqop = [!=]= +eqexpr = {compexpr}( {eqop} {eqexpr})? +andexpr = {eqexpr}( && {eqexpr})? +expr = {andexpr}( \|\| {andexpr})? +eval = {expr} +paren = \( {expr} \) +par = {name} :: {name}( {parindex})? +func = {name} \( {expr} \) +array = \[ {expr}( , {expr})* \] +value = {unop}?({par}|{func}|{paren}|{dname}|{num}|{quot}|{name}|{var}) +unop = [-!] +int = [0-9]+ +index = \[ {int} \] +parindex = \[ {expr} \] +active = (?i:ActiveThorns) +set = ({active} = ({quot}|{name})|{par}( {index}|) = ({array}|\+?{expr})){-skipeol} +desc = !DESC {quot} +file = ^( ({desc}|{set}|{active}) )*$ -- cgit v1.2.3