# values
# BUG: These are badly specified and cause the grammar to break if used generally.
# todo: consider more literals from 16.9
- real_value = Regex(r'-?\d+(\.\d*)?') # todo: this doesn't really follow the spec
boolean_value = TRUE | FALSE
bitstring_value = bstring | hstring # todo: consider more forms from 21.9
integer_value = signed_number
null_value = NULL
cstring_value = dblQuotedString
+ exponent = (Literal('e') | Literal('E')) + signed_number
+ real_value = Combine(signed_number + Optional(Literal('.') + Optional(number)) + Optional(exponent))
+
builtin_value = boolean_value | bitstring_value | real_value | integer_value | null_value | cstring_value
external_value_reference = module_reference + Suppress('.') + valuereference
defined_value = external_value_reference | valuereference # todo: more options from 13.1
-- TRUE and FALSE\r
trueVal BOOLEAN ::= TRUE\r
falseVal BOOLEAN ::= FALSE\r
+\r
+ realVal REAL ::= 3.14\r
+ intRealVal REAL ::= 6\r
+ expVal REAL ::= 2.73E12\r
+ intExpVal REAL ::= 4E9\r
END\r