summaryrefslogtreecommitdiff
path: root/etc/todo/scanners/sql.Keith Pitt.rb
diff options
context:
space:
mode:
Diffstat (limited to 'etc/todo/scanners/sql.Keith Pitt.rb')
-rw-r--r--etc/todo/scanners/sql.Keith Pitt.rb142
1 files changed, 0 insertions, 142 deletions
diff --git a/etc/todo/scanners/sql.Keith Pitt.rb b/etc/todo/scanners/sql.Keith Pitt.rb
deleted file mode 100644
index 8b0f90c..0000000
--- a/etc/todo/scanners/sql.Keith Pitt.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-module CodeRay
-module Scanners
-
- class SQL < Scanner
-
- register_for :sql
-
- include Streamable
-
- RESERVED_WORDS = %W(
- all alter and any as asc at authid avg begin between
- body bulk by case char check close cluster coalesce
- collect comment commit compress connect constant create
- current currval cursor day declare default delete
- desc distinct do drop else elsif end exception exclusive
- execute exists exit extends extract fetch for forall
- from function goto group having heap hour if immediate in
- index indicator insert interface intersect
- interval into is isolation java level like limited lock
- loop max min minus minute mlslabel mod mode month natural
- naturaln new nextval nocopy not nowait null nullif
- number_base ocirowid of on opaque open operator option or
- order organization others out package partition pctfree
- pls_integer positive positiven pragma prior private procedure
- public raise range raw real record ref release return reverse
- rollback row rowid rownum rowtype savepoint second select
- separate set share space sql sqlcode sqlerrm start
- stddev subtype successful sum synonym sysdate table then
- timezone_region timezone_abbr timezone_minute
- to trigger true type uid union unique update
- use user validate values variance view when
- whenever where while with work write year zone
- )
-
- PREDEFINED_TYPES = %W(
- array bigint bit binary blob boolean binary_integer char
- character clob date decimal double float char_base
- int integer nchar nclob smallint timestamp long number
- timestamp_hour timestamp_minute varchar varying smallint
- varchar2 nvarchar money time
- )
-
- PREDEFINED_CONSTANTS = %W(
- NULL true false'
- )
-
- IDENT_KIND = CaseIgnoringWordList.new(:ident).
- add(RESERVED_WORDS, :reserved).
- add(PREDEFINED_TYPES, :pre_type).
- add(PREDEFINED_CONSTANTS, :pre_constant)
-
- def scan_tokens tokens, options
-
- state = :initial
-
- until eos?
-
- kind = nil
- match = nil
-
- case state
-
- when :initial
-
- if scan(/ \s+ | \\\n /x)
- kind = :space
-
- elsif scan(%r! -- [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx)
- kind = :comment
-
- elsif scan(/ [-+*\/=<>?:;,!&^|()~%]+ | \.(?!\d) /x)
- kind = :operator
-
- elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x)
- kind = IDENT_KIND[match]
- if kind == :ident and check(/:(?!:)/)
- match << scan(/:/)
- kind = :label
- end
-
- elsif match = scan(/'/)
- tokens << [:open, :string]
- state = :string
- kind = :delimiter
-
- elsif scan(/(?:\d+)(?![.eEfF])/)
- kind = :integer
-
- elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/)
- kind = :float
-
- else
- getch
- kind = :error
-
- end
-
- when :string
- if scan(/[^\\\n']+/)
- kind = :content
- elsif scan(/'/)
- tokens << ["'", :delimiter]
- tokens << [:close, :string]
- state = :initial
- next
- elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)
- kind = :char
- elsif scan(/ \\ | $ /x)
- tokens << [:close, :string]
- kind = :error
- state = :initial
- else
- raise_inspect "else case \" reached; %p not handled." % peek(1), tokens
- end
-
- else
- raise_inspect 'Unknown state', tokens
-
- end
-
- match ||= matched
- if $DEBUG and not kind
- raise_inspect 'Error token %p in line %d' %
- [[match, kind], line], tokens
- end
- raise_inspect 'Empty token', tokens unless match
-
- tokens << [match, kind]
-
- end
-
- if state == :string
- tokens << [:close, :string]
- end
-
- tokens
- end
-
- end
-
-end
-end