antelope 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/antelope.gemspec +0 -2
- data/bin/antelope +3 -20
- data/examples/deterministic.output +97 -103
- data/examples/example.ace +0 -1
- data/examples/example.output +259 -333
- data/examples/simple.output +85 -87
- data/lib/antelope/ace/compiler.rb +14 -16
- data/lib/antelope/ace/errors.rb +9 -3
- data/lib/antelope/ace/grammar/generation.rb +38 -7
- data/lib/antelope/ace/grammar/precedences.rb +59 -0
- data/lib/antelope/ace/grammar/production.rb +24 -25
- data/lib/antelope/ace/grammar/productions.rb +8 -8
- data/lib/antelope/ace/grammar.rb +3 -3
- data/lib/antelope/ace/{presidence.rb → precedence.rb} +11 -11
- data/lib/antelope/ace/scanner/second.rb +2 -2
- data/lib/antelope/ace/token.rb +1 -1
- data/lib/antelope/ace.rb +2 -2
- data/lib/antelope/cli.rb +33 -0
- data/lib/antelope/errors.rb +6 -0
- data/lib/antelope/generation/constructor/first.rb +40 -6
- data/lib/antelope/generation/constructor/follow.rb +83 -25
- data/lib/antelope/generation/constructor/nullable.rb +24 -2
- data/lib/antelope/generation/constructor.rb +39 -13
- data/lib/antelope/generation/errors.rb +15 -0
- data/lib/antelope/generation/recognizer/rule.rb +111 -11
- data/lib/antelope/generation/recognizer/state.rb +53 -5
- data/lib/antelope/generation/recognizer.rb +31 -1
- data/lib/antelope/generation/tableizer.rb +42 -10
- data/lib/antelope/generation.rb +1 -1
- data/lib/antelope/generator/templates/output.erb +19 -18
- data/lib/antelope/version.rb +1 -1
- data/lib/antelope.rb +3 -2
- metadata +7 -36
- data/lib/antelope/ace/grammar/presidence.rb +0 -59
- data/lib/antelope/automaton.rb +0 -36
- data/lib/antelope/generation/conflictor/conflict.rb +0 -7
- data/lib/antelope/generation/conflictor.rb +0 -45
- data/lib/antelope/generation/constructor/lookahead.rb +0 -42
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ac4549b5e4618c5599316bc58c0838ff573edc2c
         | 
| 4 | 
            +
              data.tar.gz: d7fc04521edb6b4f6d49c500e1410f683863f1a9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 86e201447c094f12642b131464f225e4a4b8c743813800b93b296b95ad0e77c5e2516b1a3ff43e06a1502991c2980764528ad1fa6e6a79d03b741c92d253626a
         | 
| 7 | 
            +
              data.tar.gz: cfca26b2b0d3c01934c6647bcf01f79ee3403acd898718c3c80fe62fcaa1bd415fded4d97cb7c0d167b35180a564711c9d632764ec20534293a76d4688383b50
         | 
    
        data/.yardopts
    CHANGED
    
    
    
        data/antelope.gemspec
    CHANGED
    
    | @@ -18,8 +18,6 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 20 |  | 
| 21 | 
            -
              spec.add_dependency "liquid", "~> 2.6"
         | 
| 22 | 
            -
              spec.add_dependency "sourcify", "~> 0.5"
         | 
| 23 21 | 
             
              spec.add_dependency "hashie", "~> 3.0"
         | 
| 24 22 | 
             
              spec.add_dependency "thor", "~> 0.19"
         | 
| 25 23 |  | 
    
        data/bin/antelope
    CHANGED
    
    | @@ -1,24 +1,7 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 | 
            -
            $: << File.expand_path("../../lib", __FILE__) | 
| 3 | 
            +
            $: << File.expand_path("../../lib", __FILE__)
         | 
| 4 4 | 
             
            require "antelope"
         | 
| 5 | 
            -
            require " | 
| 5 | 
            +
            require "antelope/cli"
         | 
| 6 6 |  | 
| 7 | 
            -
            ARGV | 
| 8 | 
            -
              grammar = Antelope::Ace::Grammar.from_file(program)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              out = grammar.generate
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              #pass = Hash[[:recognizer,
         | 
| 13 | 
            -
              #        :constructor,
         | 
| 14 | 
            -
              #        :conflictor,
         | 
| 15 | 
            -
              #        :table].zip(out)]
         | 
| 16 | 
            -
             | 
| 17 | 
            -
              #program = Pathname.new(program)
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              #file_name = program.parent + program.basename(".ace")
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              #File.open("#{file_name}.output", "w") do |f|
         | 
| 22 | 
            -
              #  f.write Antelope::Output.output(grammar, pass)
         | 
| 23 | 
            -
              #end
         | 
| 24 | 
            -
            end
         | 
| 7 | 
            +
            Antelope::CLI.start(ARGV)
         | 
| @@ -1,32 +1,38 @@ | |
| 1 1 | 
             
            Productions:
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
               | 
| 15 | 
            -
             | 
| 16 | 
            -
              e → t ";"
         | 
| 17 | 
            -
             | 
| 18 | 
            -
               | 
| 19 | 
            -
             | 
| 20 | 
            -
               | 
| 21 | 
            -
             | 
| 22 | 
            -
              t →  | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 2 | 
            +
              s → e 
         | 
| 3 | 
            +
              e → t ";" 
         | 
| 4 | 
            +
              e → t "+" e 
         | 
| 5 | 
            +
              t → NUMBER 
         | 
| 6 | 
            +
              t → "(" e ")" 
         | 
| 7 | 
            +
              $start → s $ 
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Productions, Again:
         | 
| 10 | 
            +
              0/n0: $start(0) → s(0:1) $
         | 
| 11 | 
            +
              1/n1: s(0:1) → e(0:2)
         | 
| 12 | 
            +
              2/n1: e(0:2) → t(0:3) ";"
         | 
| 13 | 
            +
              3/n1: e(0:2) → t(0:3) "+" e(9:11)
         | 
| 14 | 
            +
              4/n1: t(0:3) → NUMBER
         | 
| 15 | 
            +
              5/n1: t(0:3) → "(" e(6:10) ")"
         | 
| 16 | 
            +
              13/n1: e(6:10) → t(6:3) ";"
         | 
| 17 | 
            +
              14/n1: e(6:10) → t(6:3) "+" e(9:11)
         | 
| 18 | 
            +
              15/n1: t(6:3) → NUMBER
         | 
| 19 | 
            +
              16/n1: t(6:3) → "(" e(6:10) ")"
         | 
| 20 | 
            +
              20/n1: e(9:11) → t(9:3) ";"
         | 
| 21 | 
            +
              21/n1: e(9:11) → t(9:3) "+" e(9:11)
         | 
| 22 | 
            +
              22/n1: t(9:3) → NUMBER
         | 
| 23 | 
            +
              23/n1: t(9:3) → "(" e(6:10) ")"
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            FOLLOW:
         | 
| 26 | 
            +
              $start(0): {}
         | 
| 27 | 
            +
              s(0:1): {$}
         | 
| 28 | 
            +
              e(0:2): {$}
         | 
| 29 | 
            +
              t(0:3): {";", "+"}
         | 
| 30 | 
            +
              e(6:10): {")"}
         | 
| 31 | 
            +
              t(6:3): {";", "+"}
         | 
| 32 | 
            +
              e(9:11): {$, ")"}
         | 
| 33 | 
            +
              t(9:3): {";", "+"}
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            Precedence:
         | 
| 30 36 | 
             
              --- highest
         | 
| 31 37 | 
             
              nonassoc 1:
         | 
| 32 38 | 
             
                {_}
         | 
| @@ -35,60 +41,48 @@ Presidence: | |
| 35 41 | 
             
              --- lowest
         | 
| 36 42 |  | 
| 37 43 | 
             
            Table:
         | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
               : | 
| 43 | 
            -
               : | 
| 44 | 
            -
             1 | 
| 45 | 
            -
             | 
| 46 | 
            -
              | 
| 47 | 
            -
             | 
| 48 | 
            -
              | 
| 49 | 
            -
              | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
              | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
               : | 
| 60 | 
            -
               : | 
| 61 | 
            -
              | 
| 62 | 
            -
             | 
| 63 | 
            -
              | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
              | 
| 67 | 
            -
              | 
| 68 | 
            -
             | 
| 69 | 
            -
              | 
| 70 | 
            -
             | 
| 71 | 
            -
              | 
| 72 | 
            -
              | 
| 73 | 
            -
              | 
| 74 | 
            -
              | 
| 75 | 
            -
              | 
| 76 | 
            -
              | 
| 77 | 
            -
              | 
| 78 | 
            -
              | 
| 79 | 
            -
             | 
| 80 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=15 left=t(9:3) right=[NUMBER] position=0>,
         | 
| 81 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=16 left=t(9:3) right=["(" e(6:10) ")"] position=0>,
         | 
| 82 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=17 left=$start(0) right=[s $] position=2>,
         | 
| 83 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=18 left=e(9:11) right=[t ";"] position=2>,
         | 
| 84 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=19 left=e(9:11) right=[t "+" e] position=2>,
         | 
| 85 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=20 left=e(9:11) right=[t(9:3) ";"] position=0>,
         | 
| 86 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=21 left=e(9:11) right=[t(9:3) "+" e(9:11)] position=0>,
         | 
| 87 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=22 left=t(9:3) right=[NUMBER] position=0>,
         | 
| 88 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=23 left=t(9:3) right=["(" e(6:10) ")"] position=0>,
         | 
| 89 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=24 left=t(9:3) right=["(" e ")"] position=2>,
         | 
| 90 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=25 left=e(9:11) right=[t "+" e] position=3>,
         | 
| 91 | 
            -
             #<Antelope::Generation::Recognizer::Rule id=26 left=t(9:3) right=["(" e ")"] position=3>]
         | 
| 44 | 
            +
              State 0:
         | 
| 45 | 
            +
                s        : state (1)
         | 
| 46 | 
            +
                e        : state (2)
         | 
| 47 | 
            +
                t        : state (3)
         | 
| 48 | 
            +
                NUMBER   : state (5)
         | 
| 49 | 
            +
                LPAREN   : state (6)
         | 
| 50 | 
            +
              State 1:
         | 
| 51 | 
            +
                $        : state (7)
         | 
| 52 | 
            +
              State 2:
         | 
| 53 | 
            +
                $        : reduce (1)
         | 
| 54 | 
            +
              State 3:
         | 
| 55 | 
            +
                SEMICOLON: state (8)
         | 
| 56 | 
            +
                ADD      : state (9)
         | 
| 57 | 
            +
              State 4:
         | 
| 58 | 
            +
                ADD      : state (9)
         | 
| 59 | 
            +
              State 5:
         | 
| 60 | 
            +
                SEMICOLON: reduce (4)
         | 
| 61 | 
            +
                ADD      : reduce (4)
         | 
| 62 | 
            +
              State 6:
         | 
| 63 | 
            +
                e        : state (10)
         | 
| 64 | 
            +
                t        : state (3)
         | 
| 65 | 
            +
                NUMBER   : state (5)
         | 
| 66 | 
            +
                LPAREN   : state (6)
         | 
| 67 | 
            +
              State 7:
         | 
| 68 | 
            +
                $        : accept (0)
         | 
| 69 | 
            +
              State 8:
         | 
| 70 | 
            +
                $        : reduce (2)
         | 
| 71 | 
            +
                RPAREN   : reduce (2)
         | 
| 72 | 
            +
              State 9:
         | 
| 73 | 
            +
                e        : state (11)
         | 
| 74 | 
            +
                t        : state (3)
         | 
| 75 | 
            +
                NUMBER   : state (5)
         | 
| 76 | 
            +
                LPAREN   : state (6)
         | 
| 77 | 
            +
              State 10:
         | 
| 78 | 
            +
                RPAREN   : state (12)
         | 
| 79 | 
            +
              State 11:
         | 
| 80 | 
            +
                $        : reduce (3)
         | 
| 81 | 
            +
                RPAREN   : reduce (3)
         | 
| 82 | 
            +
              State 12:
         | 
| 83 | 
            +
                SEMICOLON: reduce (5)
         | 
| 84 | 
            +
                ADD      : reduce (5)
         | 
| 85 | 
            +
              
         | 
| 92 86 |  | 
| 93 87 | 
             
            State 0:
         | 
| 94 88 | 
             
              rules:
         | 
| @@ -96,13 +90,13 @@ State 0: | |
| 96 90 | 
             
                  {}
         | 
| 97 91 | 
             
                1/n1: s(0:1) →  • e(0:2)
         | 
| 98 92 | 
             
                  {}
         | 
| 99 | 
            -
                2/n1: e( | 
| 93 | 
            +
                2/n1: e(0:2) →  • t(0:3) ";"
         | 
| 100 94 | 
             
                  {}
         | 
| 101 | 
            -
                3/n1: e( | 
| 95 | 
            +
                3/n1: e(0:2) →  • t(0:3) "+" e(9:11)
         | 
| 102 96 | 
             
                  {}
         | 
| 103 | 
            -
                4/n1: t( | 
| 97 | 
            +
                4/n1: t(0:3) →  • NUMBER
         | 
| 104 98 | 
             
                  {}
         | 
| 105 | 
            -
                5/n1: t( | 
| 99 | 
            +
                5/n1: t(0:3) →  • "(" e(6:10) ")"
         | 
| 106 100 | 
             
                  {}
         | 
| 107 101 |  | 
| 108 102 | 
             
              transitions:
         | 
| @@ -114,7 +108,7 @@ State 0: | |
| 114 108 |  | 
| 115 109 | 
             
            State 1:
         | 
| 116 110 | 
             
              rules:
         | 
| 117 | 
            -
                6/n0: $start | 
| 111 | 
            +
                6/n0: $start → s • $
         | 
| 118 112 | 
             
                  {}
         | 
| 119 113 |  | 
| 120 114 | 
             
              transitions:
         | 
| @@ -122,16 +116,16 @@ State 1: | |
| 122 116 |  | 
| 123 117 | 
             
            State 2:
         | 
| 124 118 | 
             
              rules:
         | 
| 125 | 
            -
                7/n1: s | 
| 119 | 
            +
                7/n1: s → e • 
         | 
| 126 120 | 
             
                  {$}
         | 
| 127 121 |  | 
| 128 122 | 
             
              transitions:
         | 
| 129 123 |  | 
| 130 124 | 
             
            State 3:
         | 
| 131 125 | 
             
              rules:
         | 
| 132 | 
            -
                8/n1: e | 
| 126 | 
            +
                8/n1: e → t • ";"
         | 
| 133 127 | 
             
                  {}
         | 
| 134 | 
            -
                10/n1: e | 
| 128 | 
            +
                10/n1: e → t • "+" e
         | 
| 135 129 | 
             
                  {}
         | 
| 136 130 |  | 
| 137 131 | 
             
              transitions:
         | 
| @@ -140,7 +134,7 @@ State 3: | |
| 140 134 |  | 
| 141 135 | 
             
            State 4:
         | 
| 142 136 | 
             
              rules:
         | 
| 143 | 
            -
                10/n1: e | 
| 137 | 
            +
                10/n1: e → t • "+" e
         | 
| 144 138 | 
             
                  {}
         | 
| 145 139 |  | 
| 146 140 | 
             
              transitions:
         | 
| @@ -148,22 +142,22 @@ State 4: | |
| 148 142 |  | 
| 149 143 | 
             
            State 5:
         | 
| 150 144 | 
             
              rules:
         | 
| 151 | 
            -
                11/n1: t | 
| 145 | 
            +
                11/n1: t → NUMBER • 
         | 
| 152 146 | 
             
                  {";", "+"}
         | 
| 153 147 |  | 
| 154 148 | 
             
              transitions:
         | 
| 155 149 |  | 
| 156 150 | 
             
            State 6:
         | 
| 157 151 | 
             
              rules:
         | 
| 158 | 
            -
                12/n1: t | 
| 152 | 
            +
                12/n1: t → "(" • e ")"
         | 
| 159 153 | 
             
                  {}
         | 
| 160 | 
            -
                13/n1: e( | 
| 154 | 
            +
                13/n1: e(6:10) →  • t(6:3) ";"
         | 
| 161 155 | 
             
                  {}
         | 
| 162 | 
            -
                14/n1: e( | 
| 156 | 
            +
                14/n1: e(6:10) →  • t(6:3) "+" e(9:11)
         | 
| 163 157 | 
             
                  {}
         | 
| 164 | 
            -
                15/n1: t( | 
| 158 | 
            +
                15/n1: t(6:3) →  • NUMBER
         | 
| 165 159 | 
             
                  {}
         | 
| 166 | 
            -
                16/n1: t( | 
| 160 | 
            +
                16/n1: t(6:3) →  • "(" e(6:10) ")"
         | 
| 167 161 | 
             
                  {}
         | 
| 168 162 |  | 
| 169 163 | 
             
              transitions:
         | 
| @@ -174,21 +168,21 @@ State 6: | |
| 174 168 |  | 
| 175 169 | 
             
            State 7:
         | 
| 176 170 | 
             
              rules:
         | 
| 177 | 
            -
                17/n0: $start | 
| 171 | 
            +
                17/n0: $start → s $ • 
         | 
| 178 172 | 
             
                  {}
         | 
| 179 173 |  | 
| 180 174 | 
             
              transitions:
         | 
| 181 175 |  | 
| 182 176 | 
             
            State 8:
         | 
| 183 177 | 
             
              rules:
         | 
| 184 | 
            -
                18/n1: e | 
| 178 | 
            +
                18/n1: e → t ";" • 
         | 
| 185 179 | 
             
                  {$, ")"}
         | 
| 186 180 |  | 
| 187 181 | 
             
              transitions:
         | 
| 188 182 |  | 
| 189 183 | 
             
            State 9:
         | 
| 190 184 | 
             
              rules:
         | 
| 191 | 
            -
                19/n1: e | 
| 185 | 
            +
                19/n1: e → t "+" • e
         | 
| 192 186 | 
             
                  {}
         | 
| 193 187 | 
             
                20/n1: e(9:11) →  • t(9:3) ";"
         | 
| 194 188 | 
             
                  {}
         | 
| @@ -207,7 +201,7 @@ State 9: | |
| 207 201 |  | 
| 208 202 | 
             
            State 10:
         | 
| 209 203 | 
             
              rules:
         | 
| 210 | 
            -
                24/n1: t | 
| 204 | 
            +
                24/n1: t → "(" e • ")"
         | 
| 211 205 | 
             
                  {}
         | 
| 212 206 |  | 
| 213 207 | 
             
              transitions:
         | 
| @@ -215,14 +209,14 @@ State 10: | |
| 215 209 |  | 
| 216 210 | 
             
            State 11:
         | 
| 217 211 | 
             
              rules:
         | 
| 218 | 
            -
                25/n1: e | 
| 212 | 
            +
                25/n1: e → t "+" e • 
         | 
| 219 213 | 
             
                  {$, ")"}
         | 
| 220 214 |  | 
| 221 215 | 
             
              transitions:
         | 
| 222 216 |  | 
| 223 217 | 
             
            State 12:
         | 
| 224 218 | 
             
              rules:
         | 
| 225 | 
            -
                26/n1: t | 
| 219 | 
            +
                26/n1: t → "(" e ")" • 
         | 
| 226 220 | 
             
                  {";", "+"}
         | 
| 227 221 |  | 
| 228 222 | 
             
              transitions:
         |