langscan 1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS.txt +19 -0
- data/History.txt +126 -0
- data/Manifest.txt +167 -0
- data/README.rdoc +89 -0
- data/Rakefile +40 -0
- data/ext/langscan/_make_c.rb +20 -0
- data/ext/langscan/_make_h.rb +30 -0
- data/ext/langscan/_template.c +134 -0
- data/ext/langscan/_template.h +53 -0
- data/ext/langscan/c/c/Makefile +157 -0
- data/ext/langscan/c/c/c.c +134 -0
- data/ext/langscan/c/c/c.h +66 -0
- data/ext/langscan/c/c/ctok.c +4622 -0
- data/ext/langscan/c/c/ctok.l +212 -0
- data/ext/langscan/c/c/extconf.rb +3 -0
- data/ext/langscan/c/c/modulename.txt +1 -0
- data/ext/langscan/c/c/tokenlist.txt +13 -0
- data/ext/langscan/csharp/csharp/Makefile +157 -0
- data/ext/langscan/csharp/csharp/csharp.c +134 -0
- data/ext/langscan/csharp/csharp/csharp.h +65 -0
- data/ext/langscan/csharp/csharp/csharptok.c +2965 -0
- data/ext/langscan/csharp/csharp/csharptok.l +200 -0
- data/ext/langscan/csharp/csharp/extconf.rb +3 -0
- data/ext/langscan/csharp/csharp/modulename.txt +1 -0
- data/ext/langscan/csharp/csharp/tokenlist.txt +12 -0
- data/ext/langscan/d/d/Makefile +157 -0
- data/ext/langscan/d/d/d.c +134 -0
- data/ext/langscan/d/d/d.h +64 -0
- data/ext/langscan/d/d/dtok.c +5461 -0
- data/ext/langscan/d/d/dtok.l +282 -0
- data/ext/langscan/d/d/extconf.rb +3 -0
- data/ext/langscan/d/d/modulename.txt +1 -0
- data/ext/langscan/d/d/tokenlist.txt +11 -0
- data/ext/langscan/elisp/elisp/Makefile +157 -0
- data/ext/langscan/elisp/elisp/elisp.c +134 -0
- data/ext/langscan/elisp/elisp/elisp.h +62 -0
- data/ext/langscan/elisp/elisp/elisptok.c +2101 -0
- data/ext/langscan/elisp/elisp/elisptok.l +151 -0
- data/ext/langscan/elisp/elisp/extconf.rb +3 -0
- data/ext/langscan/elisp/elisp/modulename.txt +1 -0
- data/ext/langscan/elisp/elisp/tokenlist.txt +9 -0
- data/ext/langscan/java/java/Makefile +157 -0
- data/ext/langscan/java/java/extconf.rb +3 -0
- data/ext/langscan/java/java/java.c +134 -0
- data/ext/langscan/java/java/java.h +64 -0
- data/ext/langscan/java/java/javatok.c +2090 -0
- data/ext/langscan/java/java/javatok.l +155 -0
- data/ext/langscan/java/java/modulename.txt +1 -0
- data/ext/langscan/java/java/tokenlist.txt +11 -0
- data/ext/langscan/javascript/javascript/Makefile +157 -0
- data/ext/langscan/javascript/javascript/extconf.rb +3 -0
- data/ext/langscan/javascript/javascript/javascript.c +134 -0
- data/ext/langscan/javascript/javascript/javascript.h +63 -0
- data/ext/langscan/javascript/javascript/javascripttok.c +2051 -0
- data/ext/langscan/javascript/javascript/javascripttok.l +147 -0
- data/ext/langscan/javascript/javascript/modulename.txt +1 -0
- data/ext/langscan/javascript/javascript/tokenlist.txt +10 -0
- data/ext/langscan/pairmatcher/pairmatcher/Makefile +157 -0
- data/ext/langscan/pairmatcher/pairmatcher/extconf.rb +3 -0
- data/ext/langscan/pairmatcher/pairmatcher/pairmatcher.c +890 -0
- data/ext/langscan/php/php/Makefile +157 -0
- data/ext/langscan/php/php/extconf.rb +3 -0
- data/ext/langscan/php/php/modulename.txt +1 -0
- data/ext/langscan/php/php/php.c +134 -0
- data/ext/langscan/php/php/php.h +64 -0
- data/ext/langscan/php/php/phptok.c +2406 -0
- data/ext/langscan/php/php/phptok.l +212 -0
- data/ext/langscan/php/php/tokenlist.txt +11 -0
- data/ext/langscan/post-distclean.rb +21 -0
- data/ext/langscan/pre-config.rb +57 -0
- data/ext/langscan/python/python/Makefile +157 -0
- data/ext/langscan/python/python/extconf.rb +3 -0
- data/ext/langscan/python/python/modulename.txt +1 -0
- data/ext/langscan/python/python/python.c +134 -0
- data/ext/langscan/python/python/python.h +61 -0
- data/ext/langscan/python/python/pythontok.c +2102 -0
- data/ext/langscan/python/python/pythontok.l +155 -0
- data/ext/langscan/python/python/tokenlist.txt +8 -0
- data/ext/langscan/ruby/compat/ripper/Makefile +158 -0
- data/ext/langscan/ruby/compat/ripper/depend +1 -0
- data/ext/langscan/ruby/compat/ripper/extconf.rb +4 -0
- data/ext/langscan/ruby/compat/ripper/include/eventids1.c +251 -0
- data/ext/langscan/ruby/compat/ripper/include/eventids2.c +277 -0
- data/ext/langscan/ruby/compat/ripper/include/lex.c +138 -0
- data/ext/langscan/ruby/compat/ripper/ripper.c +14420 -0
- data/ext/langscan/scheme/scheme/Makefile +157 -0
- data/ext/langscan/scheme/scheme/extconf.rb +3 -0
- data/ext/langscan/scheme/scheme/modulename.txt +1 -0
- data/ext/langscan/scheme/scheme/scheme.c +134 -0
- data/ext/langscan/scheme/scheme/scheme.h +60 -0
- data/ext/langscan/scheme/scheme/schemetok.c +2447 -0
- data/ext/langscan/scheme/scheme/schemetok.l +177 -0
- data/ext/langscan/scheme/scheme/tokenlist.txt +7 -0
- data/ext/langscan/sh/sh/Makefile +157 -0
- data/ext/langscan/sh/sh/extconf.rb +3 -0
- data/ext/langscan/sh/sh/modulename.txt +1 -0
- data/ext/langscan/sh/sh/sh.c +134 -0
- data/ext/langscan/sh/sh/sh.h +61 -0
- data/ext/langscan/sh/sh/shtok.c +2470 -0
- data/ext/langscan/sh/sh/shtok.l +325 -0
- data/ext/langscan/sh/sh/tokenlist.txt +8 -0
- data/lib/langscan.rb +124 -0
- data/lib/langscan/_common.rb +50 -0
- data/lib/langscan/_easyscanner.rb +78 -0
- data/lib/langscan/_pairmatcher.rb +46 -0
- data/lib/langscan/_type.rb +125 -0
- data/lib/langscan/autoconf.rb +51 -0
- data/lib/langscan/automake.rb +51 -0
- data/lib/langscan/brainfuck.rb +48 -0
- data/lib/langscan/c.rb +144 -0
- data/lib/langscan/csharp.rb +101 -0
- data/lib/langscan/css.rb +109 -0
- data/lib/langscan/d.rb +201 -0
- data/lib/langscan/eiffel.rb +167 -0
- data/lib/langscan/elisp.rb +132 -0
- data/lib/langscan/io.rb +84 -0
- data/lib/langscan/java.rb +95 -0
- data/lib/langscan/javascript.rb +97 -0
- data/lib/langscan/lua.rb +116 -0
- data/lib/langscan/ocaml.rb +298 -0
- data/lib/langscan/ocaml/camlexer.ml +28 -0
- data/lib/langscan/ocaml/lexer.mll +230 -0
- data/lib/langscan/ocaml/types.ml +36 -0
- data/lib/langscan/perl.rb +87 -0
- data/lib/langscan/perl/tokenizer.pl +231 -0
- data/lib/langscan/php.rb +80 -0
- data/lib/langscan/python.rb +101 -0
- data/lib/langscan/rpmspec.rb +71 -0
- data/lib/langscan/ruby.rb +164 -0
- data/lib/langscan/ruby/compat/README +5 -0
- data/lib/langscan/ruby/compat/ripper.rb +4 -0
- data/lib/langscan/ruby/compat/ripper/core.rb +918 -0
- data/lib/langscan/ruby/compat/ripper/filter.rb +70 -0
- data/lib/langscan/ruby/compat/ripper/lexer.rb +179 -0
- data/lib/langscan/ruby/compat/ripper/sexp.rb +100 -0
- data/lib/langscan/scheme.rb +160 -0
- data/lib/langscan/sh.rb +116 -0
- data/lib/langscan/text.rb +37 -0
- data/metaconfig +2 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/makemanifest.rb +21 -0
- data/setup.rb +1604 -0
- data/tasks/extconf.rake +13 -0
- data/tasks/extconf/langscan.rake +42 -0
- data/test/langscan/brainfuck/test/test_scan.rb +55 -0
- data/test/langscan/c/test/test_scan.rb +216 -0
- data/test/langscan/c/test/test_token.rb +41 -0
- data/test/langscan/csharp/test/test_scan.rb +157 -0
- data/test/langscan/css/test/test_css.rb +79 -0
- data/test/langscan/d/test/test_scan.rb +233 -0
- data/test/langscan/d/test/test_token.rb +205 -0
- data/test/langscan/eiffel/test/test_eiffel.rb +95 -0
- data/test/langscan/elisp/test/test_elisp.rb +177 -0
- data/test/langscan/io/test/test_io.rb +79 -0
- data/test/langscan/java/test/test_java.rb +74 -0
- data/test/langscan/javascript/test/test_javascript.rb +39 -0
- data/test/langscan/lua/test/test_lua.rb +69 -0
- data/test/langscan/ocaml/test/test_ocaml.rb +161 -0
- data/test/langscan/php/test/test_scan.rb +138 -0
- data/test/langscan/python/test/test_scan.rb +105 -0
- data/test/langscan/rpmspec/test/test_rpmspec.rb +51 -0
- data/test/langscan/ruby/test/test_scan.rb +71 -0
- data/test/langscan/scheme/test/test_scan.rb +198 -0
- data/test/test_helper.rb +7 -0
- data/test/test_langscan.rb +123 -0
- metadata +296 -0
data/lib/langscan/php.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#
|
2
|
+
# php.rb - a PHP module of LangScan
|
3
|
+
#
|
4
|
+
# Copyright (C) 2005 MATSUNO Tokuhiro <tokuhirom at yahoo.co.jp>
|
5
|
+
# All rights reserved.
|
6
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
7
|
+
#
|
8
|
+
# You can redistribute it and/or modify it under the terms of
|
9
|
+
# the GNU General Public License version 2.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'langscan/php/php'
|
13
|
+
require 'langscan/_common'
|
14
|
+
|
15
|
+
module LangScan
|
16
|
+
module PHP
|
17
|
+
module_function
|
18
|
+
|
19
|
+
def name
|
20
|
+
"PHP"
|
21
|
+
end
|
22
|
+
|
23
|
+
def abbrev
|
24
|
+
"php"
|
25
|
+
end
|
26
|
+
|
27
|
+
def extnames
|
28
|
+
[".php"]
|
29
|
+
end
|
30
|
+
|
31
|
+
# LangScan::PHP.scan iterates over PHP program.
|
32
|
+
# It yields for each Fragment.
|
33
|
+
def scan(input, &block)
|
34
|
+
each_fragment(input, &block)
|
35
|
+
end
|
36
|
+
|
37
|
+
# LangScan::PHP.each_fragment iterates over PHP-language fragments in _input_.
|
38
|
+
# The fragments contains tokens and inter-token spaces and comments.
|
39
|
+
#
|
40
|
+
# If a String is specified, the String itself is assumed as a PHP-program.
|
41
|
+
# If a IO is specified, the content of the IO is assumed as a PHP-program.
|
42
|
+
def each_fragment(input) # :yields: token
|
43
|
+
begin
|
44
|
+
tokenizer = Tokenizer.new(input)
|
45
|
+
while token_info = tokenizer.get_token
|
46
|
+
type, text, beg_lineno, beg_columnno, beg_byteno, end_lineno, end_columnno, end_byteno = token_info
|
47
|
+
token = Fragment.new(type, text, beg_lineno, beg_byteno)
|
48
|
+
if (token.type == :ident or token.type == :funcall) and KeywordsHash[token.text]
|
49
|
+
token.type = :keyword
|
50
|
+
end
|
51
|
+
yield token
|
52
|
+
end
|
53
|
+
ensure
|
54
|
+
tokenizer.close
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
Keywords = %w(
|
59
|
+
and or xor __FILE__ exception php_user_filter
|
60
|
+
__LINE__ array as break case
|
61
|
+
class const continue declare default
|
62
|
+
die do echo else elseif
|
63
|
+
empty enddeclare endfor endforeach endif
|
64
|
+
endswitch endwhile eval exit extends
|
65
|
+
for foreach function global if
|
66
|
+
include include_once isset list new
|
67
|
+
print require require_once return static
|
68
|
+
switch unset use var while
|
69
|
+
__FUNCTION__ __CLASS__ __METHOD__ final php_user_filter
|
70
|
+
interface implements extends public private
|
71
|
+
protected abstract clone try catch
|
72
|
+
throw cfunction old_function
|
73
|
+
)
|
74
|
+
KeywordsHash = {}
|
75
|
+
Keywords.each {|k| KeywordsHash[k] = k }
|
76
|
+
|
77
|
+
LangScan.register(self)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,101 @@
|
|
1
|
+
#
|
2
|
+
# python.rb - a python module of LangScan
|
3
|
+
#
|
4
|
+
# Copyright (C) 2005 Yoshinori K. Okuji <okuji@enbug.org>
|
5
|
+
# All rights reserved.
|
6
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
7
|
+
#
|
8
|
+
# You can redistribute it and/or modify it under the terms of
|
9
|
+
# the GNU General Public License version 2.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'langscan/python/python'
|
13
|
+
require 'langscan/_common'
|
14
|
+
|
15
|
+
module LangScan
|
16
|
+
module Python
|
17
|
+
module_function
|
18
|
+
def name
|
19
|
+
"Python"
|
20
|
+
end
|
21
|
+
|
22
|
+
def abbrev
|
23
|
+
"python"
|
24
|
+
end
|
25
|
+
|
26
|
+
def extnames
|
27
|
+
[".py"]
|
28
|
+
end
|
29
|
+
|
30
|
+
# LangScan::Python.scan iterates over Python program.
|
31
|
+
# It yields for each Fragment.
|
32
|
+
def scan(input, &block)
|
33
|
+
last_token = nil
|
34
|
+
each_fragment(input) {|t|
|
35
|
+
if t.type == :space
|
36
|
+
yield t
|
37
|
+
next
|
38
|
+
end
|
39
|
+
if last_token
|
40
|
+
if t.type == :ident and last_token.type == :keyword
|
41
|
+
case last_token.text
|
42
|
+
when 'def'
|
43
|
+
t.type = :fundef
|
44
|
+
when 'class'
|
45
|
+
t.type = :classdef
|
46
|
+
end
|
47
|
+
elsif t.type == :punct and t.text == '(' and last_token.type == :ident
|
48
|
+
last_token.type = :funcall
|
49
|
+
end
|
50
|
+
yield last_token
|
51
|
+
last_token = nil
|
52
|
+
end
|
53
|
+
if t.type == :ident or t.type == :keyword
|
54
|
+
last_token = t
|
55
|
+
else
|
56
|
+
yield t
|
57
|
+
end
|
58
|
+
}
|
59
|
+
if last_token
|
60
|
+
yield last_token
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# LangScan::Python.each_fragment iterates over Python-language fragments in _input_.
|
65
|
+
# The fragments contains tokens and inter-token spaces and comments.
|
66
|
+
#
|
67
|
+
# If a String is specified, the String itself is assumed as a Python-program.
|
68
|
+
# If a IO is specified, the content of the IO is assumed as a Python-program.
|
69
|
+
def each_fragment(input) # :yields: token
|
70
|
+
begin
|
71
|
+
tokenizer = Tokenizer.new(input)
|
72
|
+
while token_info = tokenizer.get_token
|
73
|
+
type, text, beg_lineno, beg_columnno, beg_byteno, end_lineno, end_columnno, end_byteno = token_info
|
74
|
+
token = Fragment.new(type, text, beg_lineno, beg_byteno)
|
75
|
+
if token.type == :ident
|
76
|
+
if KeywordsHash[token.text]
|
77
|
+
token.type = :keyword
|
78
|
+
end
|
79
|
+
end
|
80
|
+
yield token
|
81
|
+
end
|
82
|
+
ensure
|
83
|
+
tokenizer.close
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
Keywords = %w(
|
88
|
+
and assert break class continue def del elif else except exec finally
|
89
|
+
for from global if import in is lambda not or pass print raise return
|
90
|
+
try while yield
|
91
|
+
)
|
92
|
+
FutureKeywords = %w(
|
93
|
+
as None
|
94
|
+
)
|
95
|
+
KeywordsHash = {}
|
96
|
+
Keywords.each {|k| KeywordsHash[k] = k }
|
97
|
+
FutureKeywords.each {|k| KeywordsHash[k] = k }
|
98
|
+
|
99
|
+
LangScan.register(self)
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#
|
2
|
+
# rpmspec.rb - RPM SPEC module of LangScan
|
3
|
+
#
|
4
|
+
# Copyright (C) 2005 Yoshinori KUNIGA <kuniga@users.sourceforge.net>
|
5
|
+
# All rights reserved.
|
6
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
7
|
+
#
|
8
|
+
# You can redistribute it and/or modify it under the terms of
|
9
|
+
# the GNU General Public License version 2.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'langscan/_easyscanner'
|
13
|
+
|
14
|
+
module LangScan
|
15
|
+
module RPMSpec
|
16
|
+
module_function
|
17
|
+
def name
|
18
|
+
"RPM SPEC"
|
19
|
+
end
|
20
|
+
|
21
|
+
def abbrev
|
22
|
+
"rpmspec"
|
23
|
+
end
|
24
|
+
|
25
|
+
def extnames
|
26
|
+
[".spec"]
|
27
|
+
end
|
28
|
+
|
29
|
+
# From RPM 4.4.1-21 sources, file build/parsePreamble.c: preambleList[].
|
30
|
+
preamble_list = %w(
|
31
|
+
name version release epoch serial summary copyright
|
32
|
+
license distribution disturl vendor group packager url
|
33
|
+
source patch nosource nopatch excludearch exclusivearch
|
34
|
+
excludeos exclusiveos icon provides requires prereq
|
35
|
+
conflicts obsoletes prefixes prefix buildroot
|
36
|
+
buildarchitectures buildarch buildconflicts buildprereq
|
37
|
+
buildrequires autoreqprov autoreq autoprov docdir
|
38
|
+
rhnplatform disttag
|
39
|
+
).map{|word| [:keyword, "\\A(?i)#{word}\\d*"] }
|
40
|
+
|
41
|
+
# From RPM 4.4.1-21 sources, file build/parseSpec.c: partList[].
|
42
|
+
part_list = %w(
|
43
|
+
package prep build install check clean preun postun
|
44
|
+
pretrans posttrans pre post files changelog description
|
45
|
+
triggerpostun triggerun triggerin trigger verifyscript
|
46
|
+
).map{|word| [:keyword, "\\A%#{word}"] }
|
47
|
+
|
48
|
+
other_pattern = [[:comment, "#.*"],
|
49
|
+
# [:string, "'", "'"],
|
50
|
+
[:string, "\"", "\""],
|
51
|
+
[:ident, "%\\{\\w+\\}"],
|
52
|
+
[:ident, "%\\w+"],
|
53
|
+
[:word, "[-\\.\\w]+"]
|
54
|
+
]
|
55
|
+
|
56
|
+
Pattern = preamble_list + part_list + other_pattern
|
57
|
+
|
58
|
+
Types = []
|
59
|
+
|
60
|
+
Keywords = []
|
61
|
+
|
62
|
+
# LangScan::RPMSpec.scan iterates over RPM SPEC file.
|
63
|
+
# It yields for each Fragment.
|
64
|
+
def scan(input, &block)
|
65
|
+
scanner = EasyScanner.new(Pattern, Types, Keywords)
|
66
|
+
scanner.scan(input, &block)
|
67
|
+
end
|
68
|
+
|
69
|
+
LangScan.register(self)
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
#
|
2
|
+
# ruby.rb - a Ruby module of LangScan
|
3
|
+
#
|
4
|
+
# Copyright (C) 2004-2005 Akira Tanaka <akr@m17n.org>
|
5
|
+
# All rights reserved.
|
6
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
7
|
+
#
|
8
|
+
# You can redistribute it and/or modify it under the terms of
|
9
|
+
# the GNU General Public License version 2.
|
10
|
+
#
|
11
|
+
|
12
|
+
begin
|
13
|
+
require 'ripper'
|
14
|
+
rescue LoadError
|
15
|
+
require 'langscan/ruby/compat/ripper'
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'langscan/_common'
|
19
|
+
|
20
|
+
module LangScan
|
21
|
+
module Ruby
|
22
|
+
module_function
|
23
|
+
def name
|
24
|
+
"Ruby"
|
25
|
+
end
|
26
|
+
|
27
|
+
def abbrev
|
28
|
+
"ruby"
|
29
|
+
end
|
30
|
+
|
31
|
+
def extnames
|
32
|
+
[".rb"]
|
33
|
+
end
|
34
|
+
|
35
|
+
# LangScan::Ruby.scan iterates over Ruby program.
|
36
|
+
# It yields for each Fragment.
|
37
|
+
def scan(input, &block)
|
38
|
+
Parser.new(input).parse(&block)
|
39
|
+
end
|
40
|
+
|
41
|
+
class Parser < Ripper
|
42
|
+
def initialize(src)
|
43
|
+
super
|
44
|
+
@fragments = {}
|
45
|
+
@found = {}
|
46
|
+
end
|
47
|
+
attr_reader :fragments
|
48
|
+
|
49
|
+
FragmentType = {
|
50
|
+
:rparen => :punct,
|
51
|
+
:lbrace => :punct,
|
52
|
+
:embexpr_end => :punct,
|
53
|
+
:__end__ => :punct,
|
54
|
+
:tstring_end => :punct,
|
55
|
+
:qwords_beg => :punct,
|
56
|
+
:ident => :ident,
|
57
|
+
:cvar => :ident,
|
58
|
+
:semicolon => :punct,
|
59
|
+
:lbracket => :punct,
|
60
|
+
:embvar => :punct,
|
61
|
+
:backref => :punct,
|
62
|
+
:words_beg => :punct,
|
63
|
+
:rbrace => :punct,
|
64
|
+
:ignored_nl => :punct,
|
65
|
+
:embdoc => :punct,
|
66
|
+
:sp => :space,
|
67
|
+
:lparen => :punct,
|
68
|
+
:float => :punct,
|
69
|
+
:backtick => :punct,
|
70
|
+
:words_sep => :punct,
|
71
|
+
:rbracket => :punct,
|
72
|
+
:int => :integer,
|
73
|
+
:embdoc_beg => :punct,
|
74
|
+
:symbeg => :punct,
|
75
|
+
:nl => :space,
|
76
|
+
:gvar => :ident,
|
77
|
+
:comma => :punct,
|
78
|
+
:regexp_beg => :punct,
|
79
|
+
:ivar => :ident,
|
80
|
+
:embdoc_end => :punct,
|
81
|
+
:tstring_beg => :punct,
|
82
|
+
:op => :punct,
|
83
|
+
:heredoc_beg => :punct,
|
84
|
+
:comment => :comment,
|
85
|
+
:regexp_end => :punct,
|
86
|
+
:kw => :keyword,
|
87
|
+
:embexpr_beg => :punct,
|
88
|
+
:tstring_content => :string,
|
89
|
+
:period => :punct,
|
90
|
+
:heredoc_end => :punct,
|
91
|
+
:const => :const,
|
92
|
+
:CHAR => :integer,
|
93
|
+
}
|
94
|
+
|
95
|
+
Ripper::SCANNER_EVENTS.each {|ev|
|
96
|
+
type = FragmentType[ev]
|
97
|
+
define_method("on_#{ev}") {|text|
|
98
|
+
key = [lineno, column]
|
99
|
+
@fragments[key] = [type, text]
|
100
|
+
[text, key]
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
def on_class(*args)
|
105
|
+
name_key, * = args
|
106
|
+
name, key = name_key
|
107
|
+
@found[key] = :classdef
|
108
|
+
end
|
109
|
+
|
110
|
+
def on_module(*args)
|
111
|
+
name_key, * = args
|
112
|
+
name, key = name_key
|
113
|
+
@found[key] = :moduledef
|
114
|
+
end
|
115
|
+
|
116
|
+
def on_def(*args)
|
117
|
+
name_key, * = args
|
118
|
+
name, key = name_key
|
119
|
+
@found[key] = :fundef
|
120
|
+
end
|
121
|
+
|
122
|
+
def on_defs(*args)
|
123
|
+
obj, _, name_key, * = args
|
124
|
+
name, key = name_key
|
125
|
+
@found[key] = :fundef
|
126
|
+
end
|
127
|
+
|
128
|
+
def on_call(recv, _, meth)
|
129
|
+
name, key = meth
|
130
|
+
@found[key] = :funcall
|
131
|
+
end
|
132
|
+
|
133
|
+
def on_symbol_literal(*args)
|
134
|
+
name_key, * = args
|
135
|
+
name, key = name_key
|
136
|
+
@found[key] = :symbol
|
137
|
+
end
|
138
|
+
|
139
|
+
def parse
|
140
|
+
super
|
141
|
+
byteno = 0
|
142
|
+
@fragments.keys.sort.each {|key|
|
143
|
+
type, text = @fragments[key]
|
144
|
+
len = text.length
|
145
|
+
l1, c1 = key
|
146
|
+
if /\n/ =~ text
|
147
|
+
l2 = l1+text.count("\n")
|
148
|
+
else
|
149
|
+
l2 = l1
|
150
|
+
end
|
151
|
+
byteno2 = byteno+len
|
152
|
+
fragment = Fragment.new(type, text, l1, byteno)
|
153
|
+
if type = @found[key]
|
154
|
+
fragment.type = type
|
155
|
+
end
|
156
|
+
yield fragment
|
157
|
+
byteno = byteno2
|
158
|
+
}
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
LangScan.register(self)
|
163
|
+
end
|
164
|
+
end
|
@@ -0,0 +1,918 @@
|
|
1
|
+
# This file is automatically generated from core.rb.in and parse.y.
|
2
|
+
# DO NOT MODIFY!!!!!!
|
3
|
+
|
4
|
+
#
|
5
|
+
# ripper/core.rb
|
6
|
+
#
|
7
|
+
# Copyright (C) 2003,2004 Minero Aoki
|
8
|
+
#
|
9
|
+
# This program is free software.
|
10
|
+
# You can distribute and/or modify this program under the Ruby License.
|
11
|
+
# For details of Ruby License, see ruby/COPYING.
|
12
|
+
#
|
13
|
+
|
14
|
+
require 'langscan/ruby/compat/ripper.so'
|
15
|
+
|
16
|
+
class Ripper
|
17
|
+
# Parses Ruby program read from _src_.
|
18
|
+
# _src_ must be a String or a IO or a object which has #gets method.
|
19
|
+
def Ripper.parse(src, filename = '(ripper)', lineno = 1)
|
20
|
+
new(src, filename, lineno).parse
|
21
|
+
end
|
22
|
+
|
23
|
+
# This table contains name of parser events and its arity.
|
24
|
+
PARSER_EVENT_TABLE = {
|
25
|
+
:BEGIN => 1,
|
26
|
+
:END => 1,
|
27
|
+
:alias => 2,
|
28
|
+
:alias_error => 1,
|
29
|
+
:aref => 2,
|
30
|
+
:aref_field => 2,
|
31
|
+
:arg_ambiguous => 0,
|
32
|
+
:arg_paren => 1,
|
33
|
+
:arglist_add => 2,
|
34
|
+
:arglist_add_block => 2,
|
35
|
+
:arglist_add_star => 2,
|
36
|
+
:arglist_new => 0,
|
37
|
+
:arglist_prepend => 2,
|
38
|
+
:array => 1,
|
39
|
+
:assign => 2,
|
40
|
+
:assign_error => 1,
|
41
|
+
:assoc_new => 2,
|
42
|
+
:assoclist_from_args => 1,
|
43
|
+
:bare_assoc_hash => 1,
|
44
|
+
:begin => 1,
|
45
|
+
:binary => 3,
|
46
|
+
:blockvar_add_block => 2,
|
47
|
+
:blockvar_add_star => 2,
|
48
|
+
:blockvar_new => 1,
|
49
|
+
:bodystmt => 4,
|
50
|
+
:brace_block => 2,
|
51
|
+
:break => 1,
|
52
|
+
:call => 3,
|
53
|
+
:case => 2,
|
54
|
+
:class => 3,
|
55
|
+
:class_name_error => 1,
|
56
|
+
:command => 2,
|
57
|
+
:command_call => 4,
|
58
|
+
:const_ref => 1,
|
59
|
+
:constpath_field => 2,
|
60
|
+
:constpath_ref => 2,
|
61
|
+
:def => 3,
|
62
|
+
:defined => 1,
|
63
|
+
:defs => 5,
|
64
|
+
:do_block => 1,
|
65
|
+
:do_block => 2,
|
66
|
+
:dot2 => 2,
|
67
|
+
:dot3 => 2,
|
68
|
+
:dyna_symbol => 1,
|
69
|
+
:else => 1,
|
70
|
+
:elsif => 3,
|
71
|
+
:ensure => 1,
|
72
|
+
:fcall => 1,
|
73
|
+
:field => 3,
|
74
|
+
:for => 3,
|
75
|
+
:hash => 1,
|
76
|
+
:if => 3,
|
77
|
+
:if_mod => 2,
|
78
|
+
:ifop => 3,
|
79
|
+
:iter_block => 2,
|
80
|
+
:lambda => 2,
|
81
|
+
:massign => 2,
|
82
|
+
:method_add_arg => 2,
|
83
|
+
:mlhs_add => 2,
|
84
|
+
:mlhs_add_star => 2,
|
85
|
+
:mlhs_new => 0,
|
86
|
+
:mlhs_paren => 1,
|
87
|
+
:module => 2,
|
88
|
+
:mrhs_add => 2,
|
89
|
+
:mrhs_add_star => 2,
|
90
|
+
:mrhs_new => 0,
|
91
|
+
:mrhs_new_from_arglist => 1,
|
92
|
+
:next => 1,
|
93
|
+
:opassign => 3,
|
94
|
+
:param_error => 1,
|
95
|
+
:params => 4,
|
96
|
+
:paren => 1,
|
97
|
+
:parse_error => 1,
|
98
|
+
:pragma => 2,
|
99
|
+
:program => 1,
|
100
|
+
:qwords_add => 2,
|
101
|
+
:qwords_new => 0,
|
102
|
+
:redo => 0,
|
103
|
+
:regexp_literal => 2,
|
104
|
+
:rescue => 4,
|
105
|
+
:rescue_mod => 2,
|
106
|
+
:restparam => 1,
|
107
|
+
:retry => 0,
|
108
|
+
:return => 1,
|
109
|
+
:return0 => 0,
|
110
|
+
:sclass => 2,
|
111
|
+
:space => 1,
|
112
|
+
:stmts_add => 2,
|
113
|
+
:stmts_new => 0,
|
114
|
+
:string_add => 2,
|
115
|
+
:string_concat => 2,
|
116
|
+
:string_content => 0,
|
117
|
+
:string_dvar => 1,
|
118
|
+
:string_embexpr => 1,
|
119
|
+
:string_literal => 1,
|
120
|
+
:super => 1,
|
121
|
+
:symbol => 1,
|
122
|
+
:symbol_literal => 1,
|
123
|
+
:topconst_field => 1,
|
124
|
+
:topconst_ref => 1,
|
125
|
+
:unary => 2,
|
126
|
+
:undef => 1,
|
127
|
+
:unless => 3,
|
128
|
+
:unless_mod => 2,
|
129
|
+
:until => 2,
|
130
|
+
:until_mod => 2,
|
131
|
+
:var_alias => 2,
|
132
|
+
:var_field => 1,
|
133
|
+
:var_ref => 1,
|
134
|
+
:void_stmt => 0,
|
135
|
+
:when => 3,
|
136
|
+
:while => 2,
|
137
|
+
:while_mod => 2,
|
138
|
+
:word_add => 2,
|
139
|
+
:word_new => 0,
|
140
|
+
:words_add => 2,
|
141
|
+
:words_new => 0,
|
142
|
+
:xstring_add => 2,
|
143
|
+
:xstring_literal => 1,
|
144
|
+
:xstring_new => 0,
|
145
|
+
:yield => 1,
|
146
|
+
:yield0 => 0,
|
147
|
+
:zsuper => 0
|
148
|
+
}
|
149
|
+
|
150
|
+
# This array contains name of parser events.
|
151
|
+
PARSER_EVENTS = PARSER_EVENT_TABLE.keys
|
152
|
+
|
153
|
+
# This table contains name of scanner events and its arity
|
154
|
+
# (arity is always 1 for all scanner events).
|
155
|
+
SCANNER_EVENT_TABLE = {
|
156
|
+
:CHAR => 1,
|
157
|
+
:__end__ => 1,
|
158
|
+
:backref => 1,
|
159
|
+
:backtick => 1,
|
160
|
+
:comma => 1,
|
161
|
+
:comment => 1,
|
162
|
+
:const => 1,
|
163
|
+
:cvar => 1,
|
164
|
+
:embdoc => 1,
|
165
|
+
:embdoc_beg => 1,
|
166
|
+
:embdoc_end => 1,
|
167
|
+
:embexpr_beg => 1,
|
168
|
+
:embexpr_end => 1,
|
169
|
+
:embvar => 1,
|
170
|
+
:float => 1,
|
171
|
+
:gvar => 1,
|
172
|
+
:heredoc_beg => 1,
|
173
|
+
:heredoc_end => 1,
|
174
|
+
:ident => 1,
|
175
|
+
:ignored_nl => 1,
|
176
|
+
:int => 1,
|
177
|
+
:ivar => 1,
|
178
|
+
:kw => 1,
|
179
|
+
:label => 1,
|
180
|
+
:lambda => 1,
|
181
|
+
:lambda_arg => 1,
|
182
|
+
:lambeg => 1,
|
183
|
+
:lbrace => 1,
|
184
|
+
:lbracket => 1,
|
185
|
+
:lparen => 1,
|
186
|
+
:nl => 1,
|
187
|
+
:op => 1,
|
188
|
+
:period => 1,
|
189
|
+
:qwords_beg => 1,
|
190
|
+
:rbrace => 1,
|
191
|
+
:rbracket => 1,
|
192
|
+
:regexp_beg => 1,
|
193
|
+
:regexp_end => 1,
|
194
|
+
:rparen => 1,
|
195
|
+
:semicolon => 1,
|
196
|
+
:sp => 1,
|
197
|
+
:symbeg => 1,
|
198
|
+
:tstring_beg => 1,
|
199
|
+
:tstring_content => 1,
|
200
|
+
:tstring_end => 1,
|
201
|
+
:words_beg => 1,
|
202
|
+
:words_sep => 1
|
203
|
+
}
|
204
|
+
|
205
|
+
# This array contains name of scanner events.
|
206
|
+
SCANNER_EVENTS = SCANNER_EVENT_TABLE.keys
|
207
|
+
|
208
|
+
# This table contains name of all ripper events.
|
209
|
+
EVENTS = PARSER_EVENTS + SCANNER_EVENTS
|
210
|
+
|
211
|
+
### ###
|
212
|
+
### Event Handlers ###
|
213
|
+
### ###
|
214
|
+
|
215
|
+
private
|
216
|
+
|
217
|
+
# This method is called when weak warning is produced by the parser.
|
218
|
+
# _fmt_ and _args_ is printf style.
|
219
|
+
def warn(fmt, *args)
|
220
|
+
end
|
221
|
+
|
222
|
+
# This method is called when strong warning is produced by the parser.
|
223
|
+
# _fmt_ and _args_ is printf style.
|
224
|
+
def warning(fmt, *args)
|
225
|
+
end
|
226
|
+
|
227
|
+
# This method is called when the parser found syntax error.
|
228
|
+
def compile_error(msg)
|
229
|
+
end
|
230
|
+
|
231
|
+
#
|
232
|
+
# Parser Events
|
233
|
+
#
|
234
|
+
|
235
|
+
def on_BEGIN(a)
|
236
|
+
a
|
237
|
+
end
|
238
|
+
|
239
|
+
def on_END(a)
|
240
|
+
a
|
241
|
+
end
|
242
|
+
|
243
|
+
def on_alias(a, b)
|
244
|
+
a
|
245
|
+
end
|
246
|
+
|
247
|
+
def on_alias_error(a)
|
248
|
+
a
|
249
|
+
end
|
250
|
+
|
251
|
+
def on_aref(a, b)
|
252
|
+
a
|
253
|
+
end
|
254
|
+
|
255
|
+
def on_aref_field(a, b)
|
256
|
+
a
|
257
|
+
end
|
258
|
+
|
259
|
+
def on_arg_ambiguous
|
260
|
+
nil
|
261
|
+
end
|
262
|
+
|
263
|
+
def on_arg_paren(a)
|
264
|
+
a
|
265
|
+
end
|
266
|
+
|
267
|
+
def on_arglist_add(a, b)
|
268
|
+
a
|
269
|
+
end
|
270
|
+
|
271
|
+
def on_arglist_add_block(a, b)
|
272
|
+
a
|
273
|
+
end
|
274
|
+
|
275
|
+
def on_arglist_add_star(a, b)
|
276
|
+
a
|
277
|
+
end
|
278
|
+
|
279
|
+
def on_arglist_new
|
280
|
+
nil
|
281
|
+
end
|
282
|
+
|
283
|
+
def on_arglist_prepend(a, b)
|
284
|
+
a
|
285
|
+
end
|
286
|
+
|
287
|
+
def on_array(a)
|
288
|
+
a
|
289
|
+
end
|
290
|
+
|
291
|
+
def on_assign(a, b)
|
292
|
+
a
|
293
|
+
end
|
294
|
+
|
295
|
+
def on_assign_error(a)
|
296
|
+
a
|
297
|
+
end
|
298
|
+
|
299
|
+
def on_assoc_new(a, b)
|
300
|
+
a
|
301
|
+
end
|
302
|
+
|
303
|
+
def on_assoclist_from_args(a)
|
304
|
+
a
|
305
|
+
end
|
306
|
+
|
307
|
+
def on_bare_assoc_hash(a)
|
308
|
+
a
|
309
|
+
end
|
310
|
+
|
311
|
+
def on_begin(a)
|
312
|
+
a
|
313
|
+
end
|
314
|
+
|
315
|
+
def on_binary(a, b, c)
|
316
|
+
a
|
317
|
+
end
|
318
|
+
|
319
|
+
def on_blockvar_add_block(a, b)
|
320
|
+
a
|
321
|
+
end
|
322
|
+
|
323
|
+
def on_blockvar_add_star(a, b)
|
324
|
+
a
|
325
|
+
end
|
326
|
+
|
327
|
+
def on_blockvar_new(a)
|
328
|
+
a
|
329
|
+
end
|
330
|
+
|
331
|
+
def on_bodystmt(a, b, c, d)
|
332
|
+
a
|
333
|
+
end
|
334
|
+
|
335
|
+
def on_brace_block(a, b)
|
336
|
+
a
|
337
|
+
end
|
338
|
+
|
339
|
+
def on_break(a)
|
340
|
+
a
|
341
|
+
end
|
342
|
+
|
343
|
+
def on_call(a, b, c)
|
344
|
+
a
|
345
|
+
end
|
346
|
+
|
347
|
+
def on_case(a, b)
|
348
|
+
a
|
349
|
+
end
|
350
|
+
|
351
|
+
def on_class(a, b, c)
|
352
|
+
a
|
353
|
+
end
|
354
|
+
|
355
|
+
def on_class_name_error(a)
|
356
|
+
a
|
357
|
+
end
|
358
|
+
|
359
|
+
def on_command(a, b)
|
360
|
+
a
|
361
|
+
end
|
362
|
+
|
363
|
+
def on_command_call(a, b, c, d)
|
364
|
+
a
|
365
|
+
end
|
366
|
+
|
367
|
+
def on_const_ref(a)
|
368
|
+
a
|
369
|
+
end
|
370
|
+
|
371
|
+
def on_constpath_field(a, b)
|
372
|
+
a
|
373
|
+
end
|
374
|
+
|
375
|
+
def on_constpath_ref(a, b)
|
376
|
+
a
|
377
|
+
end
|
378
|
+
|
379
|
+
def on_def(a, b, c)
|
380
|
+
a
|
381
|
+
end
|
382
|
+
|
383
|
+
def on_defined(a)
|
384
|
+
a
|
385
|
+
end
|
386
|
+
|
387
|
+
def on_defs(a, b, c, d, e)
|
388
|
+
a
|
389
|
+
end
|
390
|
+
|
391
|
+
def on_do_block(a)
|
392
|
+
a
|
393
|
+
end
|
394
|
+
|
395
|
+
def on_do_block(a, b)
|
396
|
+
a
|
397
|
+
end
|
398
|
+
|
399
|
+
def on_dot2(a, b)
|
400
|
+
a
|
401
|
+
end
|
402
|
+
|
403
|
+
def on_dot3(a, b)
|
404
|
+
a
|
405
|
+
end
|
406
|
+
|
407
|
+
def on_dyna_symbol(a)
|
408
|
+
a
|
409
|
+
end
|
410
|
+
|
411
|
+
def on_else(a)
|
412
|
+
a
|
413
|
+
end
|
414
|
+
|
415
|
+
def on_elsif(a, b, c)
|
416
|
+
a
|
417
|
+
end
|
418
|
+
|
419
|
+
def on_ensure(a)
|
420
|
+
a
|
421
|
+
end
|
422
|
+
|
423
|
+
def on_fcall(a)
|
424
|
+
a
|
425
|
+
end
|
426
|
+
|
427
|
+
def on_field(a, b, c)
|
428
|
+
a
|
429
|
+
end
|
430
|
+
|
431
|
+
def on_for(a, b, c)
|
432
|
+
a
|
433
|
+
end
|
434
|
+
|
435
|
+
def on_hash(a)
|
436
|
+
a
|
437
|
+
end
|
438
|
+
|
439
|
+
def on_if(a, b, c)
|
440
|
+
a
|
441
|
+
end
|
442
|
+
|
443
|
+
def on_if_mod(a, b)
|
444
|
+
a
|
445
|
+
end
|
446
|
+
|
447
|
+
def on_ifop(a, b, c)
|
448
|
+
a
|
449
|
+
end
|
450
|
+
|
451
|
+
def on_iter_block(a, b)
|
452
|
+
a
|
453
|
+
end
|
454
|
+
|
455
|
+
def on_lambda(a, b)
|
456
|
+
a
|
457
|
+
end
|
458
|
+
|
459
|
+
def on_massign(a, b)
|
460
|
+
a
|
461
|
+
end
|
462
|
+
|
463
|
+
def on_method_add_arg(a, b)
|
464
|
+
a
|
465
|
+
end
|
466
|
+
|
467
|
+
def on_mlhs_add(a, b)
|
468
|
+
a
|
469
|
+
end
|
470
|
+
|
471
|
+
def on_mlhs_add_star(a, b)
|
472
|
+
a
|
473
|
+
end
|
474
|
+
|
475
|
+
def on_mlhs_new
|
476
|
+
nil
|
477
|
+
end
|
478
|
+
|
479
|
+
def on_mlhs_paren(a)
|
480
|
+
a
|
481
|
+
end
|
482
|
+
|
483
|
+
def on_module(a, b)
|
484
|
+
a
|
485
|
+
end
|
486
|
+
|
487
|
+
def on_mrhs_add(a, b)
|
488
|
+
a
|
489
|
+
end
|
490
|
+
|
491
|
+
def on_mrhs_add_star(a, b)
|
492
|
+
a
|
493
|
+
end
|
494
|
+
|
495
|
+
def on_mrhs_new
|
496
|
+
nil
|
497
|
+
end
|
498
|
+
|
499
|
+
def on_mrhs_new_from_arglist(a)
|
500
|
+
a
|
501
|
+
end
|
502
|
+
|
503
|
+
def on_next(a)
|
504
|
+
a
|
505
|
+
end
|
506
|
+
|
507
|
+
def on_opassign(a, b, c)
|
508
|
+
a
|
509
|
+
end
|
510
|
+
|
511
|
+
def on_param_error(a)
|
512
|
+
a
|
513
|
+
end
|
514
|
+
|
515
|
+
def on_params(a, b, c, d)
|
516
|
+
a
|
517
|
+
end
|
518
|
+
|
519
|
+
def on_paren(a)
|
520
|
+
a
|
521
|
+
end
|
522
|
+
|
523
|
+
def on_parse_error(a)
|
524
|
+
a
|
525
|
+
end
|
526
|
+
|
527
|
+
def on_pragma(a, b)
|
528
|
+
a
|
529
|
+
end
|
530
|
+
|
531
|
+
def on_program(a)
|
532
|
+
a
|
533
|
+
end
|
534
|
+
|
535
|
+
def on_qwords_add(a, b)
|
536
|
+
a
|
537
|
+
end
|
538
|
+
|
539
|
+
def on_qwords_new
|
540
|
+
nil
|
541
|
+
end
|
542
|
+
|
543
|
+
def on_redo
|
544
|
+
nil
|
545
|
+
end
|
546
|
+
|
547
|
+
def on_regexp_literal(a, b)
|
548
|
+
a
|
549
|
+
end
|
550
|
+
|
551
|
+
def on_rescue(a, b, c, d)
|
552
|
+
a
|
553
|
+
end
|
554
|
+
|
555
|
+
def on_rescue_mod(a, b)
|
556
|
+
a
|
557
|
+
end
|
558
|
+
|
559
|
+
def on_restparam(a)
|
560
|
+
a
|
561
|
+
end
|
562
|
+
|
563
|
+
def on_retry
|
564
|
+
nil
|
565
|
+
end
|
566
|
+
|
567
|
+
def on_return(a)
|
568
|
+
a
|
569
|
+
end
|
570
|
+
|
571
|
+
def on_return0
|
572
|
+
nil
|
573
|
+
end
|
574
|
+
|
575
|
+
def on_sclass(a, b)
|
576
|
+
a
|
577
|
+
end
|
578
|
+
|
579
|
+
def on_space(a)
|
580
|
+
a
|
581
|
+
end
|
582
|
+
|
583
|
+
def on_stmts_add(a, b)
|
584
|
+
a
|
585
|
+
end
|
586
|
+
|
587
|
+
def on_stmts_new
|
588
|
+
nil
|
589
|
+
end
|
590
|
+
|
591
|
+
def on_string_add(a, b)
|
592
|
+
a
|
593
|
+
end
|
594
|
+
|
595
|
+
def on_string_concat(a, b)
|
596
|
+
a
|
597
|
+
end
|
598
|
+
|
599
|
+
def on_string_content
|
600
|
+
nil
|
601
|
+
end
|
602
|
+
|
603
|
+
def on_string_dvar(a)
|
604
|
+
a
|
605
|
+
end
|
606
|
+
|
607
|
+
def on_string_embexpr(a)
|
608
|
+
a
|
609
|
+
end
|
610
|
+
|
611
|
+
def on_string_literal(a)
|
612
|
+
a
|
613
|
+
end
|
614
|
+
|
615
|
+
def on_super(a)
|
616
|
+
a
|
617
|
+
end
|
618
|
+
|
619
|
+
def on_symbol(a)
|
620
|
+
a
|
621
|
+
end
|
622
|
+
|
623
|
+
def on_symbol_literal(a)
|
624
|
+
a
|
625
|
+
end
|
626
|
+
|
627
|
+
def on_topconst_field(a)
|
628
|
+
a
|
629
|
+
end
|
630
|
+
|
631
|
+
def on_topconst_ref(a)
|
632
|
+
a
|
633
|
+
end
|
634
|
+
|
635
|
+
def on_unary(a, b)
|
636
|
+
a
|
637
|
+
end
|
638
|
+
|
639
|
+
def on_undef(a)
|
640
|
+
a
|
641
|
+
end
|
642
|
+
|
643
|
+
def on_unless(a, b, c)
|
644
|
+
a
|
645
|
+
end
|
646
|
+
|
647
|
+
def on_unless_mod(a, b)
|
648
|
+
a
|
649
|
+
end
|
650
|
+
|
651
|
+
def on_until(a, b)
|
652
|
+
a
|
653
|
+
end
|
654
|
+
|
655
|
+
def on_until_mod(a, b)
|
656
|
+
a
|
657
|
+
end
|
658
|
+
|
659
|
+
def on_var_alias(a, b)
|
660
|
+
a
|
661
|
+
end
|
662
|
+
|
663
|
+
def on_var_field(a)
|
664
|
+
a
|
665
|
+
end
|
666
|
+
|
667
|
+
def on_var_ref(a)
|
668
|
+
a
|
669
|
+
end
|
670
|
+
|
671
|
+
def on_void_stmt
|
672
|
+
nil
|
673
|
+
end
|
674
|
+
|
675
|
+
def on_when(a, b, c)
|
676
|
+
a
|
677
|
+
end
|
678
|
+
|
679
|
+
def on_while(a, b)
|
680
|
+
a
|
681
|
+
end
|
682
|
+
|
683
|
+
def on_while_mod(a, b)
|
684
|
+
a
|
685
|
+
end
|
686
|
+
|
687
|
+
def on_word_add(a, b)
|
688
|
+
a
|
689
|
+
end
|
690
|
+
|
691
|
+
def on_word_new
|
692
|
+
nil
|
693
|
+
end
|
694
|
+
|
695
|
+
def on_words_add(a, b)
|
696
|
+
a
|
697
|
+
end
|
698
|
+
|
699
|
+
def on_words_new
|
700
|
+
nil
|
701
|
+
end
|
702
|
+
|
703
|
+
def on_xstring_add(a, b)
|
704
|
+
a
|
705
|
+
end
|
706
|
+
|
707
|
+
def on_xstring_literal(a)
|
708
|
+
a
|
709
|
+
end
|
710
|
+
|
711
|
+
def on_xstring_new
|
712
|
+
nil
|
713
|
+
end
|
714
|
+
|
715
|
+
def on_yield(a)
|
716
|
+
a
|
717
|
+
end
|
718
|
+
|
719
|
+
def on_yield0
|
720
|
+
nil
|
721
|
+
end
|
722
|
+
|
723
|
+
def on_zsuper
|
724
|
+
nil
|
725
|
+
end
|
726
|
+
|
727
|
+
#
|
728
|
+
# Lexer Events
|
729
|
+
#
|
730
|
+
|
731
|
+
def on_CHAR(token)
|
732
|
+
token
|
733
|
+
end
|
734
|
+
|
735
|
+
def on___end__(token)
|
736
|
+
token
|
737
|
+
end
|
738
|
+
|
739
|
+
def on_backref(token)
|
740
|
+
token
|
741
|
+
end
|
742
|
+
|
743
|
+
def on_backtick(token)
|
744
|
+
token
|
745
|
+
end
|
746
|
+
|
747
|
+
def on_comma(token)
|
748
|
+
token
|
749
|
+
end
|
750
|
+
|
751
|
+
def on_comment(token)
|
752
|
+
token
|
753
|
+
end
|
754
|
+
|
755
|
+
def on_const(token)
|
756
|
+
token
|
757
|
+
end
|
758
|
+
|
759
|
+
def on_cvar(token)
|
760
|
+
token
|
761
|
+
end
|
762
|
+
|
763
|
+
def on_embdoc(token)
|
764
|
+
token
|
765
|
+
end
|
766
|
+
|
767
|
+
def on_embdoc_beg(token)
|
768
|
+
token
|
769
|
+
end
|
770
|
+
|
771
|
+
def on_embdoc_end(token)
|
772
|
+
token
|
773
|
+
end
|
774
|
+
|
775
|
+
def on_embexpr_beg(token)
|
776
|
+
token
|
777
|
+
end
|
778
|
+
|
779
|
+
def on_embexpr_end(token)
|
780
|
+
token
|
781
|
+
end
|
782
|
+
|
783
|
+
def on_embvar(token)
|
784
|
+
token
|
785
|
+
end
|
786
|
+
|
787
|
+
def on_float(token)
|
788
|
+
token
|
789
|
+
end
|
790
|
+
|
791
|
+
def on_gvar(token)
|
792
|
+
token
|
793
|
+
end
|
794
|
+
|
795
|
+
def on_heredoc_beg(token)
|
796
|
+
token
|
797
|
+
end
|
798
|
+
|
799
|
+
def on_heredoc_end(token)
|
800
|
+
token
|
801
|
+
end
|
802
|
+
|
803
|
+
def on_ident(token)
|
804
|
+
token
|
805
|
+
end
|
806
|
+
|
807
|
+
def on_ignored_nl(token)
|
808
|
+
token
|
809
|
+
end
|
810
|
+
|
811
|
+
def on_int(token)
|
812
|
+
token
|
813
|
+
end
|
814
|
+
|
815
|
+
def on_ivar(token)
|
816
|
+
token
|
817
|
+
end
|
818
|
+
|
819
|
+
def on_kw(token)
|
820
|
+
token
|
821
|
+
end
|
822
|
+
|
823
|
+
def on_label(token)
|
824
|
+
token
|
825
|
+
end
|
826
|
+
|
827
|
+
def on_lambda(token)
|
828
|
+
token
|
829
|
+
end
|
830
|
+
|
831
|
+
def on_lambda_arg(token)
|
832
|
+
token
|
833
|
+
end
|
834
|
+
|
835
|
+
def on_lambeg(token)
|
836
|
+
token
|
837
|
+
end
|
838
|
+
|
839
|
+
def on_lbrace(token)
|
840
|
+
token
|
841
|
+
end
|
842
|
+
|
843
|
+
def on_lbracket(token)
|
844
|
+
token
|
845
|
+
end
|
846
|
+
|
847
|
+
def on_lparen(token)
|
848
|
+
token
|
849
|
+
end
|
850
|
+
|
851
|
+
def on_nl(token)
|
852
|
+
token
|
853
|
+
end
|
854
|
+
|
855
|
+
def on_op(token)
|
856
|
+
token
|
857
|
+
end
|
858
|
+
|
859
|
+
def on_period(token)
|
860
|
+
token
|
861
|
+
end
|
862
|
+
|
863
|
+
def on_qwords_beg(token)
|
864
|
+
token
|
865
|
+
end
|
866
|
+
|
867
|
+
def on_rbrace(token)
|
868
|
+
token
|
869
|
+
end
|
870
|
+
|
871
|
+
def on_rbracket(token)
|
872
|
+
token
|
873
|
+
end
|
874
|
+
|
875
|
+
def on_regexp_beg(token)
|
876
|
+
token
|
877
|
+
end
|
878
|
+
|
879
|
+
def on_regexp_end(token)
|
880
|
+
token
|
881
|
+
end
|
882
|
+
|
883
|
+
def on_rparen(token)
|
884
|
+
token
|
885
|
+
end
|
886
|
+
|
887
|
+
def on_semicolon(token)
|
888
|
+
token
|
889
|
+
end
|
890
|
+
|
891
|
+
def on_sp(token)
|
892
|
+
token
|
893
|
+
end
|
894
|
+
|
895
|
+
def on_symbeg(token)
|
896
|
+
token
|
897
|
+
end
|
898
|
+
|
899
|
+
def on_tstring_beg(token)
|
900
|
+
token
|
901
|
+
end
|
902
|
+
|
903
|
+
def on_tstring_content(token)
|
904
|
+
token
|
905
|
+
end
|
906
|
+
|
907
|
+
def on_tstring_end(token)
|
908
|
+
token
|
909
|
+
end
|
910
|
+
|
911
|
+
def on_words_beg(token)
|
912
|
+
token
|
913
|
+
end
|
914
|
+
|
915
|
+
def on_words_sep(token)
|
916
|
+
token
|
917
|
+
end
|
918
|
+
end
|