Class: Language
- Inherits:
-
Object
show all
- Defined in:
- lib/language.rb,
lib/language/atom.rb,
lib/language/output.rb,
lib/language/parser.rb,
lib/language/parser/str.rb,
lib/language/parser/absent.rb,
lib/language/parser/interuption.rb,
lib/language/parser/end_of_input.rb,
lib/language/parser/str/not_found.rb,
lib/language/parser/absent/present.rb,
lib/language/parser/not_end_of_input.rb
Direct Known Subclasses
Code::Parser::Boolean, Code::Parser::Call, Code::Parser::Class, Code::Parser::Code, Code::Parser::Dictionnary, Code::Parser::Equal, Code::Parser::Function, Code::Parser::Group, Code::Parser::If, Code::Parser::IfModifier, Code::Parser::List, Code::Parser::Name, Code::Parser::Negation, Code::Parser::NotKeyword, Code::Parser::Nothing, Code::Parser::Number, Code::Parser::Operation, Code::Parser::Power, Code::Parser::Rescue, Code::Parser::Splat, Code::Parser::Statement, Code::Parser::String, Code::Parser::Ternary, Code::Parser::UnaryMinus, Code::Parser::While, Code::Parser::Whitespace, Template::Parser::Template
Defined Under Namespace
Classes: Atom, Output, Parser
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.<<(other) ⇒ Object
34
35
36
|
# File 'lib/language.rb', line 34
def self.<<(other)
Atom::And.new(left: new, right: other)
end
|
.>>(other) ⇒ Object
30
31
32
|
# File 'lib/language.rb', line 30
def self.>>(other)
Atom::And.new(left: new, right: other)
end
|
.absent ⇒ Object
6
7
8
|
# File 'lib/language.rb', line 6
def self.absent
Atom::Absent.new(parent: new)
end
|
.aka(name) ⇒ Object
22
23
24
|
# File 'lib/language.rb', line 22
def self.aka(name)
Atom::Aka.new(parent: new, name: name)
end
|
.ignore ⇒ Object
10
11
12
|
# File 'lib/language.rb', line 10
def self.ignore
Atom::Ignore.new(parent: new)
end
|
.maybe ⇒ Object
14
15
16
|
# File 'lib/language.rb', line 14
def self.maybe
Atom::Maybe.new(parent: new)
end
|
.parse(input) ⇒ Object
2
3
4
|
# File 'lib/language.rb', line 2
def self.parse(input)
new.parse(input)
end
|
.repeat(min = 0, max = nil) ⇒ Object
18
19
20
|
# File 'lib/language.rb', line 18
def self.repeat(min = 0, max = nil)
Atom::Repeat.new(parent: new, min: min, max: max)
end
|
.then(&block) ⇒ Object
38
39
40
|
# File 'lib/language.rb', line 38
def self.then(&block)
Atom::Then.new(parent: new, block: block)
end
|
.|(other) ⇒ Object
26
27
28
|
# File 'lib/language.rb', line 26
def self.|(other)
Atom::Or.new(left: new, right: other)
end
|
Instance Method Details
#any ⇒ Object
69
70
71
|
# File 'lib/language.rb', line 69
def any
Atom::Any.new
end
|
#inspect ⇒ Object
77
78
79
|
# File 'lib/language.rb', line 77
def inspect
to_s
end
|
#parse(input_or_parser) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/language.rb', line 42
def parse(input_or_parser)
if input_or_parser.is_a?(Parser)
parser = input_or_parser
clone =
Parser.new(
root: root,
input: parser.input,
cursor: parser.cursor,
buffer: parser.buffer,
output: parser.output
)
clone.parse(check_end_of_input: false)
parser.cursor = clone.cursor
parser.buffer = clone.buffer
parser.output = clone.output
else
input = input_or_parser
Parser.new(root: root, input: input).parse
end
end
|
#str(string) ⇒ Object
65
66
67
|
# File 'lib/language.rb', line 65
def str(string)
Atom::Str.new(string: string)
end
|
#to_s ⇒ Object
73
74
75
|
# File 'lib/language.rb', line 73
def to_s
"<#{self.class.name}>"
end
|