diff options
-rw-r--r-- | tool/ruby_vm/loaders/insns_def.rb | 34 |
1 files changed, 19 insertions, 15 deletions
@@ -11,6 +11,7 @@ # details. require_relative '../helpers/scanner' json = [] scanner = RubyVM::Scanner.new '../../../insns.def' @@ -33,7 +34,7 @@ grammar = %r' (?<pragma:name> \g<ident> ) \g<ws>* = \g<ws>* (?<pragma:expr> .+?; ) \g<ws>* ){0} - (?<insn> DEFINE_INSN \g<ws>+ (?<insn:name> \g<ident> ) \g<ws>* [(] \g<ws>* (?<insn:opes> \g<argv> ) \g<ws>* [)] \g<ws>* [(] \g<ws>* (?<insn:pops> \g<argv> ) \g<ws>* [)] \g<ws>* @@ -52,6 +53,7 @@ until scanner.eos? do l1 = scanner.scan!(/\G#{grammar}\g<insn>/o) name = scanner["insn:name"] ope = split.(scanner["insn:opes"]) pop = split.(scanner["insn:pops"]) ret = split.(scanner["insn:rets"]) @@ -67,21 +69,23 @@ until scanner.eos? do end l3 = scanner.scan!(/\G#{grammar}\g<block>/o) - json << { - name: name, - location: [path, l1], - signature: { name: name, - ope: ope, - pop: pop, - ret: ret, - }, - attributes: attrs, - expr: { - location: [path, l3], - expr: scanner["block"], - }, - } end RubyVM::InsnsDef = json |