Module: KPeg
- Defined in:
- lib/kpeg.rb,
lib/kpeg/match.rb,
lib/kpeg/parser.rb,
lib/kpeg/grammar.rb,
lib/kpeg/version.rb,
lib/kpeg/position.rb,
lib/kpeg/code_generator.rb,
lib/kpeg/compiled_parser.rb,
lib/kpeg/grammar_renderer.rb
Defined Under Namespace
Modules: Position
Classes: Action, AndPredicate, CharRange, Choice, CodeGenerator, Collect, CompiledParser, Dot, ForeignInvokeRule, FormatParser, Grammar, GrammarRenderer, InvokeRule, LiteralRegexp, LiteralString, Match, MatchComposition, MatchString, Multiple, NotPredicate, Operator, Parser, Rule, RuleReference, Sequence, Tag
Constant Summary
- VERSION =
"0.1"
Class Method Summary
(collapse)
Class Method Details
+ (Object) compile(str, name, scope = Object)
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/kpeg.rb', line 32
def self.compile(str, name, scope=Object)
parser = KPeg::FormatParser.new str
unless parser.parse
parser.raise_error
end
cg = KPeg::CodeGenerator.new name, parser.grammar
code = cg.output
scope.module_eval code
true
end
|
+ (Object) grammar {|g| ... }
2
3
4
5
6
|
# File 'lib/kpeg.rb', line 2
def self.grammar
g = Grammar.new
yield g
g
end
|
+ (Object) load(file, name)
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/kpeg.rb', line 20
def self.load(file, name)
grammar = load_grammar(file)
cg = KPeg::CodeGenerator.new name, grammar
code = cg.output
warn "[Loading parser '#{name}' => #{code.size} bytes]"
Object.module_eval code
true
end
|
+ (Object) load_grammar(file, log = false)
13
14
15
16
17
18
|
# File 'lib/kpeg.rb', line 13
def self.load_grammar(file, log=false)
parser = KPeg::FormatParser.new File.read(file)
parser.parse
return parser.grammar
end
|
+ (Object) match(str, gram)
8
9
10
11
|
# File 'lib/kpeg.rb', line 8
def self.match(str, gram)
scan = Parser.new(str, gram)
scan.parse
end
|