From cb93670a58c7e76f6d28782dbcd444d59236c2fa Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Thu, 23 Jan 2020 19:16:16 +0100 Subject: [PATCH] setup files for parser part --- .gitignore | 3 ++- README.md | 10 +++++++--- Rakefile | 14 +++++++++++--- grammar.y | 9 +++++++++ spec/query_parser_spec.rb | 9 +++++++++ 5 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 grammar.y create mode 100644 spec/query_parser_spec.rb diff --git a/.gitignore b/.gitignore index 837c184..c8d090a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea -lexer.rb \ No newline at end of file +lexer.rb +parser.rb \ No newline at end of file diff --git a/README.md b/README.md index 3123cb2..2eae07a 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,19 @@ # parser -###Prerequisites +### Prerequisites * Rexical (rex) +* Racc -###Available commands +### Available commands * `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 `parser` tests, execute : `rspec spec/query_parser_spec.rb` To run all tests, execute : `rake spec` \ No newline at end of file diff --git a/Rakefile b/Rakefile index b63d98d..92064f7 100644 --- a/Rakefile +++ b/Rakefile @@ -2,11 +2,19 @@ require 'rspec/core/rake_task' RSpec::Core::RakeTask.new do |c| options = ['--color'] - options += ["--format", "documentation"] + options += %w[--format documentation] c.rspec_opts = options end -desc "Generate Lexer" +desc 'Generate Lexer' task :lexer do `rex specification.rex -o lexer.rb` -end \ No newline at end of file +end + +desc 'Generate Parser' +task :parser do + `racc grammar.y -o parser.rb` +end + +desc 'Generate Lexer and Parser' +task generate: %i[lexer parser] \ No newline at end of file diff --git a/grammar.y b/grammar.y new file mode 100644 index 0000000..72d6f25 --- /dev/null +++ b/grammar.y @@ -0,0 +1,9 @@ +class Query + rule + expression: +end + +---- inner + def parse(input) + scan_str(input) + end \ No newline at end of file diff --git a/spec/query_parser_spec.rb b/spec/query_parser_spec.rb new file mode 100644 index 0000000..a314de2 --- /dev/null +++ b/spec/query_parser_spec.rb @@ -0,0 +1,9 @@ +require './parser' + +class QueryParserTester + describe 'Testing the Parser' do + before do + @evaluator = Query.new + end + end +end