setup files for parser part
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
.idea
|
.idea
|
||||||
|
|
||||||
lexer.rb
|
lexer.rb
|
||||||
|
parser.rb
|
||||||
10
README.md
10
README.md
@@ -1,15 +1,19 @@
|
|||||||
# parser
|
# parser
|
||||||
|
|
||||||
###Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
* Rexical (rex)
|
* Rexical (rex)
|
||||||
|
* Racc
|
||||||
|
|
||||||
###Available commands
|
### Available commands
|
||||||
|
|
||||||
* `rake lexer` - generates `lexer.rb` file based on `specification.rex` file
|
* `rake lexer` - generates `lexer.rb` file based on `specification.rex` file
|
||||||
|
* `rake parser` - generates `parser.rb` file based on `grammar.y` file
|
||||||
|
* `rake generate` - generates `lexer.rb` and `parser.rb` files
|
||||||
|
|
||||||
###Testing
|
### Testing
|
||||||
|
|
||||||
To run only `lexer` tests, execute : `rspec spec/query_lexer_spec.rb`
|
To run only `lexer` tests, execute : `rspec spec/query_lexer_spec.rb`
|
||||||
|
To run only `parser` tests, execute : `rspec spec/query_parser_spec.rb`
|
||||||
|
|
||||||
To run all tests, execute : `rake spec`
|
To run all tests, execute : `rake spec`
|
||||||
14
Rakefile
14
Rakefile
@@ -2,11 +2,19 @@ require 'rspec/core/rake_task'
|
|||||||
|
|
||||||
RSpec::Core::RakeTask.new do |c|
|
RSpec::Core::RakeTask.new do |c|
|
||||||
options = ['--color']
|
options = ['--color']
|
||||||
options += ["--format", "documentation"]
|
options += %w[--format documentation]
|
||||||
c.rspec_opts = options
|
c.rspec_opts = options
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Generate Lexer"
|
desc 'Generate Lexer'
|
||||||
task :lexer do
|
task :lexer do
|
||||||
`rex specification.rex -o lexer.rb`
|
`rex specification.rex -o lexer.rb`
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc 'Generate Parser'
|
||||||
|
task :parser do
|
||||||
|
`racc grammar.y -o parser.rb`
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'Generate Lexer and Parser'
|
||||||
|
task generate: %i[lexer parser]
|
||||||
9
grammar.y
Normal file
9
grammar.y
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
class Query
|
||||||
|
rule
|
||||||
|
expression:
|
||||||
|
end
|
||||||
|
|
||||||
|
---- inner
|
||||||
|
def parse(input)
|
||||||
|
scan_str(input)
|
||||||
|
end
|
||||||
9
spec/query_parser_spec.rb
Normal file
9
spec/query_parser_spec.rb
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
require './parser'
|
||||||
|
|
||||||
|
class QueryParserTester
|
||||||
|
describe 'Testing the Parser' do
|
||||||
|
before do
|
||||||
|
@evaluator = Query.new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user