Module: Rubasteme
- Defined in:
- lib/rubasteme.rb,
lib/rubasteme/ast.rb,
lib/rubasteme/error.rb,
lib/rubasteme/utils.rb,
lib/rubasteme/parser.rb,
lib/rubasteme/version.rb,
lib/rubasteme/ast/leaf_node.rb,
lib/rubasteme/ast/branch_node.rb,
lib/rubasteme/parser/phase1_parser.rb,
lib/rubasteme/parser/phase2_parser.rb,
lib/rubasteme/parser/derived_converter.rb
Defined Under Namespace
Modules: AST, Parser, Utils
Classes: Error, MissingRightParenthesisError, NotImplementedYetError, SchemeSyntaxErrorError, UnexpectedTokenTypeError, UnsupportedFeatureError
Constant Summary
collapse
- EMSG =
{
scheme_syntax_error: "syntax error: %s",
unexpected_token_type: "unexpected token type: got=%s, expected=%s",
missing_right_parenthesis: "missing right parenthesis",
unsupported_feature: "unsupported feature: %s",
not_implemented_yet: "not implemented yet: %s",
}
- VERSION =
"0.1.7"
- RELEASE =
"2021-06-09"
Class Method Summary
collapse
Class Method Details
.lexer(obj) ⇒ Object
8
9
10
|
# File 'lib/rubasteme.rb', line 8
def self.lexer(obj)
Rbscmlex::Lexer.new(obj)
end
|
.make_version(name) ⇒ Object
7
8
9
10
|
# File 'lib/rubasteme/version.rb', line 7
def self.make_version(name)
mod_name = name.downcase.split("::").join(".")
"(#{mod_name} :version #{VERSION} :release #{RELEASE})"
end
|
.parse(source) ⇒ Object
12
13
14
|
# File 'lib/rubasteme.rb', line 12
def self.parse(source)
parser.parse(lexer(source))
end
|
.parser ⇒ Object
5
6
7
|
# File 'lib/rubasteme/parser.rb', line 5
def self.parser
Parser::Parser.new
end
|
.phase1_parse(source) ⇒ Object
5
6
7
|
# File 'lib/rubasteme/parser/phase1_parser.rb', line 5
def self.phase1_parse(source)
Parser::Phase1Parser.new.parse(Rbscmlex.lexer(source))
end
|
.phase2_parse(source) ⇒ Object
5
6
7
8
|
# File 'lib/rubasteme/parser/phase2_parser.rb', line 5
def self.phase2_parse(source)
nodes = Parser::Phase1Parser.new.parse(Rbscmlex.lexer(source))
Parser::Phase2Parser.new.parse(nodes)
end
|
.write(ast_node, of = STDOUT) ⇒ Object
5
6
7
|
# File 'lib/rubasteme/ast.rb', line 5
def self.write(ast_node, of = STDOUT)
of.puts ast_node.to_s
end
|