view tests/agcl/parsifal/reg.syn @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 */

eof = 0
blank = ' ' + '\t'
name char = ~(eof + '[' + ']' + '\\' + '\n' + '"' + '@')
digit  = '0-9'


reg file $
 -> reg line?..., eof

reg line
 -> title, eol
 -> path, eol
 -> key, eol

eol
 ->'\n'
 -> eol, '\n'

name
 -> name char
 -> name, name char

title
 -> name

path
 -> '[', path char?..., ']'

path char
 -> ~(eof + ']' + '\\' + '\n' + '@')
 -> '\\', ~eof

string
 -> '"', string char?..., '"'

string char
 -> ~(eof + '"' + '\\')
 -> '\\', ~eof

 key
 -> string, '=', value
 -> '@', '=', value

 value
  -> string
  -> hex data
  -> "dword:", hex word

hex data
 -> "hex", ['(', hex word, ')'], ':', hex bytes?

hex bytes
 -> hex byte
 -> hex bytes, separator, hex byte

separator
 -> ','
 -> ',', "\\\n", ' '?...

hex byte
 -> hex digit, hex digit

hex digit
 -> '0-9'
 -> 'a-f'

hex word
 -> hex digit
 -> hex word, hex digit