README.md in src_lexer-1.0.2 vs README.md in src_lexer-1.0.3

- old
+ new

@@ -1,84 +1,84 @@ -# SrcLexer - -SrcLexer is a simple source file lexer. - -## Installation - -Add this line to your application's Gemfile: - - gem 'src_lexer' - -And then execute: - - $ bundle - -Or install it yourself as: - - $ gem install src_lexer - -## Usage - - lexer = SrcLexer::Lexer.new( - ['struct', 'enum', 'true', 'false'], # kyewords - ['{', '}', '(', ')', ',', '==', '=', ';'], # symbols - ['"', '"'], # string literal markers - '//', # line comment marker - ['/*', '*/'] # multi line comment markers - ) - - lexer.analyze(<<-'EOS') - // comment - enum ID { - First = 1, - Second = 1.5 - } - /* comment - againe */ - struct Data { - string name = "This is a name."; - ID id; - } - bool b = (true==false); - EOS - - lexer.pop_token # => ['enum', SrcLexer::Token.new('enum', 2, 3)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('ID', 2, 8)] - lexer.pop_token # => ['{', SrcLexer::Token.new('{', 2, 11)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('First', 3, 5)] - lexer.pop_token # => ['=', SrcLexer::Token.new('=', 3, 11)] - lexer.pop_token # => [:NUMBER, SrcLexer::Token.new('1', 3, 13)] - lexer.pop_token # => [',', SrcLexer::Token.new(',', 3, 14)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('Second', 4, 5)] - lexer.pop_token # => ['=', SrcLexer::Token.new('=', 4, 12)] - lexer.pop_token # => [:NUMBER, SrcLexer::Token.new('1.5', 4, 14)] - lexer.pop_token # => ['}', SrcLexer::Token.new('}', 5, 3)] - lexer.pop_token # => ['struct', SrcLexer::Token.new('struct', 8, 3)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('Data', 8, 10)] - lexer.pop_token # => ['{', SrcLexer::Token.new('{', 8, 15)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('string', 9, 5)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('name', 9, 12)] - lexer.pop_token # => ['=', SrcLexer::Token.new('=', 9, 17)] - lexer.pop_token # => [:STRING, SrcLexer::Token.new('"This is a name."', 9, 19)] - lexer.pop_token # => [';', SrcLexer::Token.new(';', 9, 36)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('ID', 10, 5)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('id', 10, 8)] - lexer.pop_token # => [';', SrcLexer::Token.new(';', 10, 10)] - lexer.pop_token # => ['}', SrcLexer::Token.new('}', 11, 3)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('bool', 12, 3)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('b', 12, 8)] - lexer.pop_token # => [:IDENT, SrcLexer::Token.new('=', 12, 10)] - lexer.pop_token # => ['(', SrcLexer::Token.new('(', 12, 12)] - lexer.pop_token # => ['true', SrcLexer::Token.new('true', 12, 13)] - lexer.pop_token # => ['==', SrcLexer::Token.new('==', 12, 17)] - lexer.pop_token # => ['false', SrcLexer::Token.new('false', 12, 19)] - lexer.pop_token # => [')', SrcLexer::Token.new(')', 12, 24)] - lexer.pop_token # => [';', SrcLexer::Token.new(';', 12, 25)] - lexer.pop_token # => SrcLexer::Lexer::END_TOKEN - -## Contributing - -1. Fork it ( http://github.com/<my-github-username>/src_lexer/fork ) -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Commit your changes (`git commit -am 'Add some feature'`) -4. Push to the branch (`git push origin my-new-feature`) -5. Create new Pull Request +# SrcLexer + +SrcLexer is a simple source file lexer. + +## Installation + +Add this line to your application's Gemfile: + + gem 'src_lexer' + +And then execute: + + $ bundle + +Or install it yourself as: + + $ gem install src_lexer + +## Usage + + lexer = SrcLexer::Lexer.new( + ['struct', 'enum', 'true', 'false'], # kyewords + ['{', '}', '(', ')', ',', '==', '=', ';'], # symbols + ['"', '"'], # string literal markers + '//', # line comment marker + ['/*', '*/'] # multi line comment markers + ) + + lexer.analyze(<<-'EOS') + // comment + enum ID { + First = 1, + Second = 1.5 + } + /* comment + againe */ + struct Data { + string name = "This is a name."; + ID id; + } + bool b = (true==false); + EOS + + lexer.pop_token # => ['enum', SrcLexer::Token.new('enum', 2, 3)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('ID', 2, 8)] + lexer.pop_token # => ['{', SrcLexer::Token.new('{', 2, 11)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('First', 3, 5)] + lexer.pop_token # => ['=', SrcLexer::Token.new('=', 3, 11)] + lexer.pop_token # => [:NUMBER, SrcLexer::Token.new('1', 3, 13)] + lexer.pop_token # => [',', SrcLexer::Token.new(',', 3, 14)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('Second', 4, 5)] + lexer.pop_token # => ['=', SrcLexer::Token.new('=', 4, 12)] + lexer.pop_token # => [:NUMBER, SrcLexer::Token.new('1.5', 4, 14)] + lexer.pop_token # => ['}', SrcLexer::Token.new('}', 5, 3)] + lexer.pop_token # => ['struct', SrcLexer::Token.new('struct', 8, 3)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('Data', 8, 10)] + lexer.pop_token # => ['{', SrcLexer::Token.new('{', 8, 15)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('string', 9, 5)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('name', 9, 12)] + lexer.pop_token # => ['=', SrcLexer::Token.new('=', 9, 17)] + lexer.pop_token # => [:STRING, SrcLexer::Token.new('"This is a name."', 9, 19)] + lexer.pop_token # => [';', SrcLexer::Token.new(';', 9, 36)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('ID', 10, 5)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('id', 10, 8)] + lexer.pop_token # => [';', SrcLexer::Token.new(';', 10, 10)] + lexer.pop_token # => ['}', SrcLexer::Token.new('}', 11, 3)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('bool', 12, 3)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('b', 12, 8)] + lexer.pop_token # => [:IDENT, SrcLexer::Token.new('=', 12, 10)] + lexer.pop_token # => ['(', SrcLexer::Token.new('(', 12, 12)] + lexer.pop_token # => ['true', SrcLexer::Token.new('true', 12, 13)] + lexer.pop_token # => ['==', SrcLexer::Token.new('==', 12, 17)] + lexer.pop_token # => ['false', SrcLexer::Token.new('false', 12, 19)] + lexer.pop_token # => [')', SrcLexer::Token.new(')', 12, 24)] + lexer.pop_token # => [';', SrcLexer::Token.new(';', 12, 25)] + lexer.pop_token # => SrcLexer::Lexer::END_TOKEN + +## Contributing + +1. Fork it ( http://github.com/<my-github-username>/src_lexer/fork ) +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request