Class: ASMREPL::Parser
- Inherits:
-
Racc::Parser
- Object
- Racc::Parser
- ASMREPL::Parser
- Defined in:
- lib/asmrepl/parser.rb,
lib/asmrepl/parser.tab.rb
Constant Summary collapse
- Racc_arg =
[ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ]
- Racc_token_to_s_table =
[ "$end", "error", "on_lbracket", "on_rbracket", "on_int", "on_comma", "qword", "ptr", "word", "dword", "byte", "plus", "minus", "on_instruction", "on_register", "on_rip", "$start", "command", "instruction", "register", "int", "memory", "memsize" ]
- Racc_debug_parser =
false
Instance Method Summary collapse
-
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted.
- #_reduce_10(val, _values, result) ⇒ Object
- #_reduce_11(val, _values, result) ⇒ Object
- #_reduce_12(val, _values, result) ⇒ Object
- #_reduce_13(val, _values, result) ⇒ Object
- #_reduce_14(val, _values, result) ⇒ Object
- #_reduce_15(val, _values, result) ⇒ Object
- #_reduce_16(val, _values, result) ⇒ Object
- #_reduce_17(val, _values, result) ⇒ Object
- #_reduce_18(val, _values, result) ⇒ Object
- #_reduce_19(val, _values, result) ⇒ Object
- #_reduce_2(val, _values, result) ⇒ Object
- #_reduce_20(val, _values, result) ⇒ Object
- #_reduce_21(val, _values, result) ⇒ Object
- #_reduce_22(val, _values, result) ⇒ Object
- #_reduce_23(val, _values, result) ⇒ Object
- #_reduce_24(val, _values, result) ⇒ Object
- #_reduce_25(val, _values, result) ⇒ Object
- #_reduce_26(val, _values, result) ⇒ Object
- #_reduce_3(val, _values, result) ⇒ Object
- #_reduce_4(val, _values, result) ⇒ Object
- #_reduce_5(val, _values, result) ⇒ Object
- #_reduce_6(val, _values, result) ⇒ Object
- #_reduce_7(val, _values, result) ⇒ Object
- #_reduce_8(val, _values, result) ⇒ Object
- #_reduce_9(val, _values, result) ⇒ Object
- #_reduce_none(val, _values, result) ⇒ Object
-
#initialize ⇒ Parser
constructor
A new instance of Parser.
- #new_command(mnemonic, arg1, arg2) ⇒ Object
- #new_single(mnemonic) ⇒ Object
- #new_tuple(mnemonic, arg1) ⇒ Object
- #next_token ⇒ Object
- #parse(input) ⇒ Object
Constructor Details
#initialize ⇒ Parser
Returns a new instance of Parser.
70 71 72 73 |
# File 'lib/asmrepl/parser.rb', line 70 def initialize @registers = Set.new Fisk::Registers.constants.map(&:to_s) @instructions = Set.new Fisk::Instructions.constants.map(&:to_s) end |
Instance Method Details
#_reduce_1(val, _values, result) ⇒ Object
reduce 0 omitted
162 163 164 165 |
# File 'lib/asmrepl/parser.tab.rb', line 162 def _reduce_1(val, _values, result) result = new_command(val[0], val[1], val[3]) result end |
#_reduce_10(val, _values, result) ⇒ Object
207 208 209 210 |
# File 'lib/asmrepl/parser.tab.rb', line 207 def _reduce_10(val, _values, result) result = [:instruction, val[0]] result end |
#_reduce_11(val, _values, result) ⇒ Object
212 213 214 215 |
# File 'lib/asmrepl/parser.tab.rb', line 212 def _reduce_11(val, _values, result) result = [:register, val[0]] result end |
#_reduce_12(val, _values, result) ⇒ Object
217 218 219 220 |
# File 'lib/asmrepl/parser.tab.rb', line 217 def _reduce_12(val, _values, result) result = [:int, Integer(val[0])] result end |
#_reduce_13(val, _values, result) ⇒ Object
222 223 224 225 |
# File 'lib/asmrepl/parser.tab.rb', line 222 def _reduce_13(val, _values, result) result = [:int, Integer(val[1])] result end |
#_reduce_14(val, _values, result) ⇒ Object
227 228 229 230 |
# File 'lib/asmrepl/parser.tab.rb', line 227 def _reduce_14(val, _values, result) result = [:int, -Integer(val[1])] result end |
#_reduce_15(val, _values, result) ⇒ Object
232 233 234 235 |
# File 'lib/asmrepl/parser.tab.rb', line 232 def _reduce_15(val, _values, result) result = [:memory, Fisk::M64.new(val[1].last, 0)] result end |
#_reduce_16(val, _values, result) ⇒ Object
237 238 239 240 |
# File 'lib/asmrepl/parser.tab.rb', line 237 def _reduce_16(val, _values, result) result = [:memory, Fisk::Registers::Rip.new(0)] result end |
#_reduce_17(val, _values, result) ⇒ Object
242 243 244 245 |
# File 'lib/asmrepl/parser.tab.rb', line 242 def _reduce_17(val, _values, result) result = [:memory, Fisk::Registers::Rip.new(val[2].last)] result end |
#_reduce_18(val, _values, result) ⇒ Object
247 248 249 250 |
# File 'lib/asmrepl/parser.tab.rb', line 247 def _reduce_18(val, _values, result) result = [:memory, Fisk::Registers::Rip.new(0)] result end |
#_reduce_19(val, _values, result) ⇒ Object
252 253 254 255 |
# File 'lib/asmrepl/parser.tab.rb', line 252 def _reduce_19(val, _values, result) result = [:memory, Fisk::Registers::Rip.new(val[3].last)] result end |
#_reduce_2(val, _values, result) ⇒ Object
167 168 169 170 |
# File 'lib/asmrepl/parser.tab.rb', line 167 def _reduce_2(val, _values, result) result = new_command(val[0], val[1], val[3]) result end |
#_reduce_20(val, _values, result) ⇒ Object
257 258 259 260 |
# File 'lib/asmrepl/parser.tab.rb', line 257 def _reduce_20(val, _values, result) result = [:memory, Fisk::M64.new(val[1].last, val[2].last)] result end |
#_reduce_21(val, _values, result) ⇒ Object
262 263 264 265 |
# File 'lib/asmrepl/parser.tab.rb', line 262 def _reduce_21(val, _values, result) result = [:memory, val[0].new(val[2].last, 0)] result end |
#_reduce_22(val, _values, result) ⇒ Object
267 268 269 270 |
# File 'lib/asmrepl/parser.tab.rb', line 267 def _reduce_22(val, _values, result) result = [:memory, val[0].new(val[2].last, val[3].last)] result end |
#_reduce_23(val, _values, result) ⇒ Object
272 273 274 275 |
# File 'lib/asmrepl/parser.tab.rb', line 272 def _reduce_23(val, _values, result) result = Fisk::M64 result end |
#_reduce_24(val, _values, result) ⇒ Object
277 278 279 280 |
# File 'lib/asmrepl/parser.tab.rb', line 277 def _reduce_24(val, _values, result) result = Fisk::M32 result end |
#_reduce_25(val, _values, result) ⇒ Object
282 283 284 285 |
# File 'lib/asmrepl/parser.tab.rb', line 282 def _reduce_25(val, _values, result) result = Fisk::M16 result end |
#_reduce_26(val, _values, result) ⇒ Object
287 288 289 290 |
# File 'lib/asmrepl/parser.tab.rb', line 287 def _reduce_26(val, _values, result) result = Fisk::M8 result end |
#_reduce_3(val, _values, result) ⇒ Object
172 173 174 175 |
# File 'lib/asmrepl/parser.tab.rb', line 172 def _reduce_3(val, _values, result) result = new_command(val[0], val[1], val[3]) result end |
#_reduce_4(val, _values, result) ⇒ Object
177 178 179 180 |
# File 'lib/asmrepl/parser.tab.rb', line 177 def _reduce_4(val, _values, result) result = new_command(val[0], val[1], val[3]) result end |
#_reduce_5(val, _values, result) ⇒ Object
182 183 184 185 |
# File 'lib/asmrepl/parser.tab.rb', line 182 def _reduce_5(val, _values, result) result = new_command(val[0], val[1], val[3]) result end |
#_reduce_6(val, _values, result) ⇒ Object
187 188 189 190 |
# File 'lib/asmrepl/parser.tab.rb', line 187 def _reduce_6(val, _values, result) result = new_tuple(val[0], val[1]) result end |
#_reduce_7(val, _values, result) ⇒ Object
192 193 194 195 |
# File 'lib/asmrepl/parser.tab.rb', line 192 def _reduce_7(val, _values, result) result = new_tuple(val[0], val[1]) result end |
#_reduce_8(val, _values, result) ⇒ Object
197 198 199 200 |
# File 'lib/asmrepl/parser.tab.rb', line 197 def _reduce_8(val, _values, result) result = new_tuple(val[0], val[1]) result end |
#_reduce_9(val, _values, result) ⇒ Object
202 203 204 205 |
# File 'lib/asmrepl/parser.tab.rb', line 202 def _reduce_9(val, _values, result) result = new_single(val[0]) result end |
#_reduce_none(val, _values, result) ⇒ Object
292 293 294 |
# File 'lib/asmrepl/parser.tab.rb', line 292 def _reduce_none(val, _values, result) val[0] end |
#new_command(mnemonic, arg1, arg2) ⇒ Object
80 81 82 |
# File 'lib/asmrepl/parser.rb', line 80 def new_command mnemonic, arg1, arg2 [:command, mnemonic, arg1, arg2] end |
#new_single(mnemonic) ⇒ Object
88 89 90 |
# File 'lib/asmrepl/parser.rb', line 88 def new_single mnemonic [:command, mnemonic] end |
#new_tuple(mnemonic, arg1) ⇒ Object
84 85 86 |
# File 'lib/asmrepl/parser.rb', line 84 def new_tuple mnemonic, arg1 [:command, mnemonic, arg1] end |
#next_token ⇒ Object
92 93 94 95 96 97 |
# File 'lib/asmrepl/parser.rb', line 92 def next_token while tok = @lexer.next_token next if tok.first == :on_sp return tok end end |