examples/general/SRL/lib/grammar.rb in rley-0.5.08 vs examples/general/SRL/lib/grammar.rb in rley-0.5.09
- old
+ new
@@ -4,25 +4,33 @@
########################################
# Work in progress.
# This is a very partial grammar of SRL.
# It will be expanded with the coming versions of Rley
builder = Rley::Syntax::GrammarBuilder.new do
- add_terminals('DIGIT', 'INTEGER')
+ add_terminals('DIGIT_LIT', 'INTEGER', 'LETTER_LIT')
+ add_terminals('UPPERCASE', 'LETTER', 'FROM', 'TO')
add_terminals('EXACTLY', 'TIMES', 'ONCE', 'TWICE')
add_terminals('BETWEEN', 'AND', 'OPTIONAL', 'OR')
add_terminals('MORE', 'NEVER', 'AT', 'LEAST')
# For the moment one focuses on quantifier syntax only...
- rule 'srl' => 'quantifier'
+ rule 'srl' => 'term'
+ rule 'term' => 'atom'
+ rule 'term' => %w[atom quantifier]
+ rule 'atom' => 'letter_range'
+ rule 'letter_range' => %w[LETTER FROM LETTER_LIT TO LETTER_LIT]
+ rule 'letter_range' => %w[UPPERCASE LETTER FROM LETTER_LIT TO LETTER_LIT]
+ rule 'letter_range' => 'LETTER'
+ rule 'letter_range' => %w[UPPERCASE LETTER]
rule 'quantifier' => 'ONCE'
rule 'quantifier' => 'TWICE'
rule 'quantifier' => %w[EXACTLY count TIMES]
rule 'quantifier' => %w[BETWEEN count AND count times_suffix]
rule 'quantifier' => 'OPTIONAL'
rule 'quantifier' => %w[ONCE OR MORE]
rule 'quantifier' => %w[NEVER OR MORE]
rule 'quantifier' => %w[AT LEAST count TIMES]
- rule 'count' => 'DIGIT'
+ rule 'count' => 'DIGIT_LIT'
rule 'count' => 'INTEGER'
rule 'times_suffix' => 'TIMES'
rule 'times_suffix' => []
end
\ No newline at end of file