class Vertigo::Lexer

Public Class Methods

new() click to toggle source
Calls superclass method GenericLexer::new
# File lib/vertigo/lexer.rb, line 6
def initialize
  super
  keyword 'abs'
  keyword 'access'
  keyword 'after'
  keyword 'alias'
  keyword 'all'
  keyword 'and'
  keyword 'architecture'
  keyword 'array'
  keyword 'assert'
  keyword 'attribute'
  keyword 'begin'
  keyword 'block'
  keyword 'body'
  keyword 'buffer'
  keyword 'bus'
  keyword 'case'
  keyword 'component'
  keyword 'configuration'
  keyword 'constant'
  keyword 'disconnect'
  keyword 'downto'
  keyword 'else'
  keyword 'elsif'
  keyword 'end'
  keyword 'entity'
  keyword 'exit'
  keyword 'file'
  keyword 'for'
  keyword 'function'
  keyword 'generate'
  keyword 'generic'
  keyword 'group'
  keyword 'guarded'
  keyword 'if'
  keyword 'impure'
  keyword 'inertial'
  keyword 'inout'
  keyword 'in'
  keyword 'is'
  keyword 'label'
  keyword 'library'
  keyword 'linkage'
  keyword 'literal'
  keyword 'loop'
  keyword 'map'
  keyword 'mod'
  keyword 'nand'
  keyword 'natural'
  keyword 'integer'
  keyword 'boolean'
  keyword 'positive'
  keyword 'new'
  keyword 'next'
  keyword 'nor'
  keyword 'not'
  keyword 'null'
  keyword 'of'
  keyword 'on'
  keyword 'open'
  keyword 'or'
  keyword 'xor'
  keyword 'others'
  keyword 'out'
  keyword 'package'
  keyword 'port'
  keyword 'postponed'
  keyword 'procedure'
  keyword 'process'
  keyword 'pure'
  keyword 'range'
  keyword 'record'
  keyword 'register'
  keyword 'reject'
  keyword 'report'
  keyword 'return'
  keyword 'rol'
  keyword 'ror'
  keyword 'select'
  keyword 'severity'
  keyword 'signal'
  keyword 'shared'
  keyword 'sla'
  keyword 'sli'
  keyword 'sra'
  keyword 'srl'
  keyword 'subtype'
  keyword 'then'
  keyword 'to'
  keyword 'transport'
  keyword 'time'
  keyword 'type'
  keyword 'unaffected'
  keyword 'units'
  keyword 'until'
  keyword 'use'
  keyword 'variable'
  keyword 'wait'
  keyword 'when'
  keyword 'while'
  keyword 'with'
  keyword 'xnor'
  keyword 'xorkeyword '
  keyword 'ns'
  keyword 'ps'
  keyword 'ms'
  keyword 'warning'
  keyword 'error'
  keyword 'note'
  keyword 'failure'
  keyword 'true'
  keyword 'false'
  #.............................................................
  token :comment           => /\A\-\-(.*)$/

  #   token :selected_name     => /\w+(\.\w+)+/ # /\S+\w+\.\w+/
  token :bit_string_literal => /([bB]|[oO]|[xX])"[^_]\w+"/
  token :ident             => /[a-zA-Z]\w*/

  token :string_literal    => /"[^"]*"/
  token :char_literal      => /'(\w+)'/
  token :attribute_literal => /'(\w+)/
  token :based_literal     => /\d+#\w+(\.\w+)?#/
  token :decimal_literal   => /\d+(\.\d+)?(E([+-]?)\d+)?/
  token :vassign           => /\A\:\=/
  #token :sassign           => /\A\<\=/
  token :comma             => /\A\,/
  token :colon             => /\A\:/
  token :semicolon         => /\A\;/
  token :lparen            => /\A\(/
  token :rparen            => /\A\)/

  token :tick              => /\A'/  #for qualified expression

  token :neq               => /\A\/\=/ # here for precedence

  # arith
  token :add               => /\A\+/
  token :sub               => /\A\-/
  token :exp               => /\A\*\*/
  token :mul               => /\A\*/
  token :div               => /\A\//

  token :imply             => /\A\=\>/
  token :urange            => /\A<>/

  # logical
  token :eq                => /\A\=/
  token :gte               => /\A\>\=/
  token :gt                => /\A\>/
  token :leq               => /\A\<\=/
  token :lt                => /\A\</

  token :sassign           => /\A\<\=/

  token :ampersand         => /\A\&/

  token :dot               => /\A\./
  token :bar               => /\|/
  #............................................................
  token :newline           =>  /[\n]/
  token :space             => /[ \t\r]+/

end