EBNF Syntax - Lookahead-1 Ambiguity Annotation

Syntax Productions
Terminals
Literals
Production Cross Reference
Lookahead-1 Parser First Token
Lookahead-1 Parser Ambiguities

Syntax Productions

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start symbol = file

Name Production
andex
appinfo 'appinfo' block ';'
arith
base
  • 'hex'
  • 'dec'
  • 'oct'
  • 'bin'
  • 'base' '(' DECVALUE ')'
block 'begin' { expr_value | modifier | block | value } 'end'
chunk
condex
datetime
  • 'now'
  • 'today' [ TIMEVALUE ]
  • DATEVALUE [ TIMEVALUE ]
  • HEXVALUE
double_float
  • 'double'
  • 'float'
eqex
expr condex
expr_value '(' expr ')'
factor
file 'file' { file_attr } file_body ';'
file_attr
  • 'filename' '=' STRING ';'
  • 'attrib' '=' file_attr_value ';'
  • 'version' '=' HEXVALUE ';'
  • 'creation_date' '=' datetime ';'
  • 'modification_date' '=' datetime ';'
  • 'backup_date' '=' datetime ';'
  • 'modification' '=' HEXVALUE ';'
  • 'typeid' '=' file_id ';'
  • 'creatorid' '=' file_id ';'
  • 'uniqueid_seed' '=' HEXVALUE ';'
file_attr_flag
  • 'resource'
  • 'readonly'
  • 'dirty'
  • 'backup'
  • 'newer'
  • 'reset'
  • 'nobeam'
  • 'stream'
  • 'hidden'
  • HEXVALUE
file_attr_value file_attr_flag { ( '+' | '|' ) file_attr_flag }
file_body 'begin' { chunk } 'end'
file_id
  • CHAR
  • HEXVALUE
  • '{' HEXVALUE HEXVALUE HEXVALUE HEXVALUE '}'
modifier
nested '(' expr ')'
orex
pad
  • 'padstring' '(' DECVALUE ')'
  • 'padchar' '(' DECVALUE ')'
prim
rec_attr_flag
  • 'secret'
  • 'busy'
  • 'dirty'
  • 'delete'
  • 'category' '(' DECVALUE ')'
  • HEXVALUE
rec_attr_value rec_attr_flag { ( '+' | '|' ) rec_attr_flag }
rec_id
  • CHAR
  • HEXVALUE
  • '{' HEXVALUE HEXVALUE HEXVALUE '}'
record 'record' { record_attr } block ';'
record_attr
relex
resource 'resource' { resource_attr } block ';'
resource_attr
  • 'typeid' '=' type_id ';'
  • 'id' '=' DECVALUE ';'
shiftex
size
  • 'byte'
  • 'word'
  • 'long'
  • 'size' '(' DECVALUE ')'
sortinfo 'sortinfo' block ';'
term
type_id
  • CHAR
  • HEXVALUE
  • '{' HEXVALUE HEXVALUE HEXVALUE HEXVALUE '}'
value
  • BINVALUE
  • OCTVALUE
  • DECVALUE
  • HEXVALUE
  • REAL
  • FLOAT
  • DOUBLE
  • STRING
  • CHAR
xorex


Terminals

Terminal Used in
BINVALUE
value
CHAR
file_id / rec_id / type_id / value
DATEVALUE
datetime
DECVALUE
base / pad / rec_attr_flag / resource_attr / size / value
DOUBLE
value
FLOAT
value
HEXVALUE
datetime / file_attr / file_attr_flag / file_id / rec_attr_flag / rec_id / type_id / value
OCTVALUE
value
REAL
value
STRING
file_attr / value
TIMEVALUE
datetime

Literals

Literal Used in
!
factor
!=
eqex
%
term
&
andex
(
base / expr_value / nested / pad / rec_attr_flag / size
)
base / expr_value / nested / pad / rec_attr_flag / size
*
term
+
arith / factor / file_attr_value / rec_attr_value
-
arith / factor
/
term
:
condex
;
appinfo / file / file_attr / record / record_attr / resource / resource_attr / sortinfo
<
relex
<<
shiftex
<=
relex
=
file_attr / record_attr / resource_attr
==
eqex
>
relex
>=
relex
>>
shiftex
?
condex
^
xorex
{
file_id / rec_id / type_id
|
file_attr_value / orex / rec_attr_value
}
file_id / rec_id / type_id
~
factor
appinfo
appinfo
attrib
file_attr / record_attr
backup
file_attr_flag
backup_date
file_attr
base
base
begin
block / file_body
bin
base
busy
rec_attr_flag
byte
size
category
rec_attr_flag
creation_date
file_attr
creatorid
file_attr
dec
base
delete
rec_attr_flag
dirty
file_attr_flag / rec_attr_flag
double
double_float
end
block / file_body
file
file
filename
file_attr
float
double_float
hex
base
hidden
file_attr_flag
id
resource_attr
long
size
modification
file_attr
modification_date
file_attr
newer
file_attr_flag
nobeam
file_attr_flag
now
datetime
oct
base
padchar
pad
padstring
pad
readonly
file_attr_flag
record
record
recordid
record_attr
reset
file_attr_flag
resource
file_attr_flag / resource
secret
rec_attr_flag
size
size
sortinfo
sortinfo
stream
file_attr_flag
today
datetime
typeid
file_attr / resource_attr
uniqueid_seed
file_attr
version
file_attr
word
size

Production Cross Reference

Production Used in
andexandex / xorex
appinfochunk
aritharith / shiftex
basemodifier
blockappinfo / block / record / resource / sortinfo
chunkfile_body
condexcondex / expr
datetimefile_attr
double_floatmodifier
eqexandex / eqex
exprexpr_value / nested
expr_valueblock
factorfactor / term
file
file_attrfile
file_attr_flagfile_attr_value
file_attr_valuefile_attr
file_bodyfile
file_idfile_attr
modifierblock
nestedprim
orexcondex / orex
padmodifier
primfactor
rec_attr_flagrec_attr_value
rec_attr_valuerecord_attr
rec_idrecord_attr
recordchunk
record_attrrecord
relexeqex / relex
resourcechunk
resource_attrresource
shiftexrelex / shiftex
sizemodifier
sortinfochunk
termarith / term
type_idresource_attr
valueblock / prim
xorexorex / xorex

Lookahead-1 Parser First Token

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start symbol = file

Name First Tokens
andex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
appinfo 'appinfo'
arith '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
base 'base'
'bin'
'dec'
'hex'
'oct'
block 'begin'
chunk 'appinfo'
'record'
'resource'
'sortinfo'
condex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
datetime 'now'
'today'
DATEVALUE
HEXVALUE
double_float 'double'
'float'
eqex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
expr '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
expr_value '('
factor '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
file 'file'
file_attr 'attrib'
'backup_date'
'creation_date'
'creatorid'
'filename'
'modification'
'modification_date'
'typeid'
'uniqueid_seed'
'version'
file_attr_flag 'backup'
'dirty'
'hidden'
'newer'
'nobeam'
'readonly'
'reset'
'resource'
'stream'
HEXVALUE
file_attr_value 'backup'
'dirty'
'hidden'
'newer'
'nobeam'
'readonly'
'reset'
'resource'
'stream'
HEXVALUE
file_body 'begin'
file_id '{'
CHAR
HEXVALUE
modifier 'base'
'bin'
'byte'
'dec'
'double'
'float'
'hex'
'long'
'oct'
'padchar'
'padstring'
'size'
'word'
nested '('
orex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
pad 'padchar'
'padstring'
prim '('
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
rec_attr_flag 'busy'
'category'
'delete'
'dirty'
'secret'
HEXVALUE
rec_attr_value 'busy'
'category'
'delete'
'dirty'
'secret'
HEXVALUE
rec_id '{'
CHAR
HEXVALUE
record 'record'
record_attr 'attrib'
'recordid'
relex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
resource 'resource'
resource_attr 'id'
'typeid'
shiftex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
size 'byte'
'long'
'size'
'word'
sortinfo 'sortinfo'
term '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
type_id '{'
CHAR
HEXVALUE
value BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
xorex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING


Lookahead-1 Parser Ambiguities

Ref Production Ambiguous
Literals/Terminals
Can't decide between the following
#1 andex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#2 arith '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#3 condex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#4 eqex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#5 orex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#6 relex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#7 shiftex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#8 term '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING
#9 xorex '!'
'('
'+'
'-'
'~'
BINVALUE
CHAR
DECVALUE
DOUBLE
FLOAT
HEXVALUE
OCTVALUE
REAL
STRING

ebnf2annot, Copyright (C) 2000, A. Gieriet, andi@pobox.ch