samples/parse-errortest
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'd-parse'
require 'pp'
module MyGrammar
extend DParse::DSL
LETTER =
describe(alt(*('a'..'z').map { |c| char(c) }), 'letter')
IDENTIFIER =
describe(
repeat(LETTER).capture,
'identifier',
)
FUNDEF =
seq(
describe(IDENTIFIER, 'identifier'),
eof,
)
PARSER =
alt(
string('Hello!'),
string('Hello, world!'),
string('Hello… ?'),
)
TESTB =
seq(
alt(
seq(string('a+a').capture),
seq(string('a').capture),
),
eof,
)
end
puts MyGrammar::PARSER.apply('Hello, what?').pretty_message
puts
puts MyGrammar::FUNDEF.apply('foo3a').pretty_message
puts
puts MyGrammar::TESTB.apply('a+').pretty_message