Class: GlooLang::Core::Parser
- Inherits:
-
Object
- Object
- GlooLang::Core::Parser
- Defined in:
- lib/gloo_lang/core/parser.rb
Instance Method Summary collapse
-
#initialize(engine) ⇒ Parser
constructor
Set up the parser.
-
#parse_immediate(cmd) ⇒ Object
Parse a command from the immediate execution context.
-
#run(cmd) ⇒ Object
Parse a command and then run it if it parsed correctly.
-
#split_params(cmd) ⇒ Object
If additional params were provided, split them out from the token list.
Constructor Details
#initialize(engine) ⇒ Parser
Set up the parser.
15 16 17 18 |
# File 'lib/gloo_lang/core/parser.rb', line 15 def initialize( engine ) @engine = engine @engine.log.debug 'parser intialized...' end |
Instance Method Details
#parse_immediate(cmd) ⇒ Object
Parse a command from the immediate execution context.
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/gloo_lang/core/parser.rb', line 23 def parse_immediate( cmd ) cmd, params = split_params cmd params = GlooLang::Core::Tokens.new( params ) if params tokens = GlooLang::Core::Tokens.new( cmd ) dic = GlooLang::Core::Dictionary.instance verb = dic.find_verb( tokens.verb ) return verb.new( @engine, tokens, params ) if verb @engine.log.error "Verb '#{tokens.verb}' was not found." return nil end |
#run(cmd) ⇒ Object
Parse a command and then run it if it parsed correctly.
53 54 55 56 |
# File 'lib/gloo_lang/core/parser.rb', line 53 def run( cmd ) v = parse_immediate( cmd ) GlooLang::Exec::Runner.go( @engine, v ) if v end |
#split_params(cmd) ⇒ Object
If additional params were provided, split them out from the token list.
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/gloo_lang/core/parser.rb', line 39 def split_params( cmd ) params = nil i = cmd.rindex( '(' ) if i && cmd.strip.end_with?( ')' ) pstr = cmd[ i + 1..-1 ] params = pstr.strip[ 0..-2 ] if pstr cmd = cmd[ 0, i - 1 ] end return cmd, params end |