Class: Crokus::Lexer
- Inherits:
-
GenericLexer
- Object
- GenericLexer
- Crokus::Lexer
- Defined in:
- lib/crokus/lexer.rb
Instance Method Summary collapse
-
#initialize ⇒ Lexer
constructor
A new instance of Lexer.
Methods inherited from GenericLexer
#get_token, #ignore, #keyword, #next_token, #open, #position, #token, #tokenize
Constructor Details
#initialize ⇒ Lexer
Returns a new instance of Lexer.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/crokus/lexer.rb', line 6 def initialize super ignore /\s+/ keyword "auto" keyword "break" keyword "case" keyword "char" keyword "const" keyword "continue" keyword "default" keyword "do" keyword "double" keyword "else" keyword "enum" keyword "extern" keyword "float" keyword "for" keyword "goto" keyword "if" keyword "int" keyword "long" keyword "register" keyword "return" keyword "short" keyword "signed" keyword "sizeof" keyword "static" keyword "struct" keyword "switch" keyword "typedef" keyword "union" keyword "unsigned" keyword "void" keyword "volatile" keyword "while" token :qmark => /\?/ token :lparen => /\(/ token :rparen => /\)/ token :lbrace => /\{/ token :rbrace => /\}/ token :lbrack => /\[/ token :rbrack => /\]/ token :semicolon => /;/ token :colon => /:/ token :comma => /\,/ token :lcomment => /\/\*/ token :rcomment => /\*\// token :comment => /\/\/(.*)/ token :dot => /\./ token :neq => /!=/ token :not => /\!/ token :eq => /\=\=/ token :assign => /\=/ token :inc_op => /\+\+/ token :add_assign => /\+\=/ token :add => /\+/ token :dec_op => /\-\-/ token :sub_assign => /\-\=/ token :ptr_op => /\-\>/ token :sub => /\-/ token :mul_assign => /\*=/ token :mul => /\*/ token :div_assign => /\/=/ token :div => /\// token :shift_r => /\>\>/ token :shift_l => /\<\</ token :oror => /\|\|/ token :lte => /<=/ token :lt => /</ token :gte => />=/ token :gt => />/ token :andand => /\&\&/ token :and => /\&/ token :or => /\|/ token :mod_assign => /\%=/ token :mod => /\%/ token :xor_assign => /\^\=/ token :xor => /\^/ token :sharp => /#/ # .............literals.............................. token :ident => /\A[a-zA-Z]\w*/i token :float_lit => /\A\d*(\.\d+)(E([+-]?)\d+)?/ token :integer_lit => /\A((0x[0-9a-fA-F]+)|\d+)L?/ token :string_lit => /\A"[^"]*"/ token :char_lit => /\A'\\?.'/ token :lexer_warning => /./ end |