Class: Expressir::Express::Parser::Parser
- Inherits:
-
Parslet::Parser
- Object
- Parslet::Parser
- Expressir::Express::Parser::Parser
- Defined in:
- lib/expressir/express/parser.rb
Constant Summary collapse
- KEYWORDS =
%i[ ABS ABSTRACT ACOS AGGREGATE ALIAS AND ANDOR ARRAY AS ASIN ATAN BAG BASED_ON BEGIN BINARY BLENGTH BOOLEAN BY CASE CONSTANT CONST_E COS DERIVE DIV ELSE END END_ALIAS END_CASE END_CONSTANT END_ENTITY END_FUNCTION END_IF END_LOCAL END_PROCEDURE END_REPEAT END_RULE END_SCHEMA END_SUBTYPE_CONSTRAINT END_TYPE ENTITY ENUMERATION ESCAPE EXISTS EXP EXTENSIBLE FALSE FIXED FOR FORMAT FROM FUNCTION GENERIC GENERIC_ENTITY HIBOUND HIINDEX IF IN INSERT INTEGER INVERSE LENGTH LIKE LIST LOBOUND LOCAL LOG LOG10 LOG2 LOGICAL LOINDEX MOD NOT NUMBER NVL ODD OF ONEOF OPTIONAL OR OTHERWISE PI PROCEDURE QUERY REAL REFERENCE REMOVE RENAMED REPEAT RETURN ROLESOF RULE SCHEMA SELECT SELF SET SIN SIZEOF SKIP SQRT STRING SUBTYPE SUBTYPE_CONSTRAINT SUPERTYPE TAN THEN TO TRUE TYPE TYPEOF TOTAL_OVER UNIQUE UNKNOWN UNTIL USE USEDIN VALUE VALUE_IN VALUE_UNIQUE VAR WITH WHERE WHILE XOR ].freeze
Instance Method Summary collapse
Instance Method Details
#cstr(atom) ⇒ Object
14 15 16 |
# File 'lib/expressir/express/parser.rb', line 14 def cstr(atom) cts(str(atom).as(:str)) end |
#cts(atom) ⇒ Object
10 11 12 |
# File 'lib/expressir/express/parser.rb', line 10 def cts(atom) spaces >> atom end |
#keyword_rule(str) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/expressir/express/parser.rb', line 34 def keyword_rule(str) key_chars = str.to_s.chars key_chars .collect! { |char| match("[#{char}#{char.downcase}]") } .reduce(:>>) >> match["a-zA-Z0-9_"].absent? end |