From c83a249c04e1ffea408d9da9c461e32ccd9ed8c6 Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Thu, 23 Jan 2020 09:05:32 +0100 Subject: [PATCH] setup files for lexer part --- .gitignore | 3 +++ README.md | 14 +++++++++++++- Rakefile | 12 ++++++++++++ spec/query_lexer_spec.rb | 10 ++++++++++ specification.rex | 17 +++++++++++++++++ 5 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 Rakefile create mode 100644 spec/query_lexer_spec.rb create mode 100644 specification.rex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..837c184 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea + +lexer.rb \ No newline at end of file diff --git a/README.md b/README.md index 1da7fd1..3123cb2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ # parser -parser ba \ No newline at end of file +###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` \ No newline at end of file diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..b63d98d --- /dev/null +++ b/Rakefile @@ -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 \ No newline at end of file diff --git a/spec/query_lexer_spec.rb b/spec/query_lexer_spec.rb new file mode 100644 index 0000000..d4f9fc0 --- /dev/null +++ b/spec/query_lexer_spec.rb @@ -0,0 +1,10 @@ +require './lexer' + +class QueryLexerTester + describe 'Testing the Lexer' do + before do + @evaluator = Query.new + end + + end +end diff --git a/specification.rex b/specification.rex new file mode 100644 index 0000000..4c11083 --- /dev/null +++ b/specification.rex @@ -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 \ No newline at end of file