setup files for lexer part
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.idea
|
||||||
|
|
||||||
|
lexer.rb
|
||||||
14
README.md
14
README.md
@@ -1,3 +1,15 @@
|
|||||||
# parser
|
# parser
|
||||||
|
|
||||||
parser ba
|
###Prerequisites
|
||||||
|
|
||||||
|
* Rexical (rex)
|
||||||
|
|
||||||
|
###Available commands
|
||||||
|
|
||||||
|
* `rake lexer` - generates `lexer.rb` file based on `specification.rex` file
|
||||||
|
|
||||||
|
###Testing
|
||||||
|
|
||||||
|
To run only `lexer` tests, execute : `rspec spec/query_lexer_spec.rb`
|
||||||
|
|
||||||
|
To run all tests, execute : `rake spec`
|
||||||
12
Rakefile
Normal file
12
Rakefile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
require 'rspec/core/rake_task'
|
||||||
|
|
||||||
|
RSpec::Core::RakeTask.new do |c|
|
||||||
|
options = ['--color']
|
||||||
|
options += ["--format", "documentation"]
|
||||||
|
c.rspec_opts = options
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Generate Lexer"
|
||||||
|
task :lexer do
|
||||||
|
`rex specification.rex -o lexer.rb`
|
||||||
|
end
|
||||||
10
spec/query_lexer_spec.rb
Normal file
10
spec/query_lexer_spec.rb
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
require './lexer'
|
||||||
|
|
||||||
|
class QueryLexerTester
|
||||||
|
describe 'Testing the Lexer' do
|
||||||
|
before do
|
||||||
|
@evaluator = Query.new
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
17
specification.rex
Normal file
17
specification.rex
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
class Query
|
||||||
|
macro
|
||||||
|
|
||||||
|
|
||||||
|
rule
|
||||||
|
.
|
||||||
|
|
||||||
|
inner
|
||||||
|
def tokenize(code)
|
||||||
|
scan_setup(code)
|
||||||
|
tokens = []
|
||||||
|
while token = next_token
|
||||||
|
tokens << token
|
||||||
|
end
|
||||||
|
tokens
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user