1
0
Fork 0

Go fmt em all

This commit is contained in:
Gregory Eremin 2014-10-20 22:27:40 +07:00
parent 81068376fa
commit 3c14e17cb1
12 changed files with 1625 additions and 1799 deletions

View File

@ -1,7 +1,6 @@
package errors package errors
import( import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/localhots/penny/token" "github.com/localhots/penny/token"

View File

@ -1,12 +1,11 @@
package lexer package lexer
import( import (
"fmt" "fmt"
"github.com/localhots/penny/token" "github.com/localhots/penny/token"
) )
type ActionTable [NumStates] ActionRow type ActionTable [NumStates]ActionRow
type ActionRow struct { type ActionRow struct {
Accept token.Type Accept token.Type
@ -18,297 +17,296 @@ func (this ActionRow) String() string {
} }
var ActTab = ActionTable{ var ActTab = ActionTable{
ActionRow{ // S0 ActionRow{ // S0
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S1 ActionRow{ // S1
Accept: -1, Accept: -1,
Ignore: "!whitespace", Ignore: "!whitespace",
}, },
ActionRow{ // S2 ActionRow{ // S2
Accept: 7, Accept: 7,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S3 ActionRow{ // S3
Accept: 39, Accept: 39,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S4 ActionRow{ // S4
Accept: 9, Accept: 9,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S5 ActionRow{ // S5
Accept: 10, Accept: 10,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S6 ActionRow{ // S6
Accept: 3, Accept: 3,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S7 ActionRow{ // S7
Accept: 40, Accept: 40,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S8 ActionRow{ // S8
Accept: 28, Accept: 28,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S9 ActionRow{ // S9
Accept: 4, Accept: 4,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S10 ActionRow{ // S10
Accept: 30, Accept: 30,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S11 ActionRow{ // S11
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S12 ActionRow{ // S12
Accept: 13, Accept: 13,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S13 ActionRow{ // S13
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S14 ActionRow{ // S14
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S15 ActionRow{ // S15
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S16 ActionRow{ // S16
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S17 ActionRow{ // S17
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S18 ActionRow{ // S18
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S19 ActionRow{ // S19
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S20 ActionRow{ // S20
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S21 ActionRow{ // S21
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S22 ActionRow{ // S22
Accept: 24, Accept: 24,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S23 ActionRow{ // S23
Accept: 8, Accept: 8,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S24 ActionRow{ // S24
Accept: 25, Accept: 25,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S25 ActionRow{ // S25
Accept: 38, Accept: 38,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S26 ActionRow{ // S26
Accept: 5, Accept: 5,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S27 ActionRow{ // S27
Accept: 16, Accept: 16,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S28 ActionRow{ // S28
Accept: 29, Accept: 29,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S29 ActionRow{ // S29
Accept: 35, Accept: 35,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S30 ActionRow{ // S30
Accept: 33, Accept: 33,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S31 ActionRow{ // S31
Accept: 31, Accept: 31,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S32 ActionRow{ // S32
Accept: 32, Accept: 32,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S33 ActionRow{ // S33
Accept: 34, Accept: 34,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S34 ActionRow{ // S34
Accept: 37, Accept: 37,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S35 ActionRow{ // S35
Accept: 13, Accept: 13,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S36 ActionRow{ // S36
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S37 ActionRow{ // S37
Accept: 2, Accept: 2,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S38 ActionRow{ // S38
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S39 ActionRow{ // S39
Accept: 26, Accept: 26,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S40 ActionRow{ // S40
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S41 ActionRow{ // S41
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S42 ActionRow{ // S42
Accept: 19, Accept: 19,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S43 ActionRow{ // S43
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S44 ActionRow{ // S44
Accept: 17, Accept: 17,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S45 ActionRow{ // S45
Accept: 12, Accept: 12,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S46 ActionRow{ // S46
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S47 ActionRow{ // S47
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S48 ActionRow{ // S48
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S49 ActionRow{ // S49
Accept: 6, Accept: 6,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S50 ActionRow{ // S50
Accept: 36, Accept: 36,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S51 ActionRow{ // S51
Accept: 13, Accept: 13,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S52 ActionRow{ // S52
Accept: 2, Accept: 2,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S53 ActionRow{ // S53
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S54 ActionRow{ // S54
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S55 ActionRow{ // S55
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S56 ActionRow{ // S56
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S57 ActionRow{ // S57
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S58 ActionRow{ // S58
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S59 ActionRow{ // S59
Accept: 11, Accept: 11,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S60 ActionRow{ // S60
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S61 ActionRow{ // S61
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S62 ActionRow{ // S62
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S63 ActionRow{ // S63
Accept: 14, Accept: 14,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S64 ActionRow{ // S64
Accept: 27, Accept: 27,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S65 ActionRow{ // S65
Accept: 20, Accept: 20,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S66 ActionRow{ // S66
Accept: 21, Accept: 21,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S67 ActionRow{ // S67
Accept: 15, Accept: 15,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S68 ActionRow{ // S68
Accept: 18, Accept: 18,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S69 ActionRow{ // S69
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S70 ActionRow{ // S70
Accept: 0, Accept: 0,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S71 ActionRow{ // S71
Accept: 23, Accept: 23,
Ignore: "", Ignore: "",
}, },
ActionRow{ // S72 ActionRow{ // S72
Accept: 22, Accept: 22,
Ignore: "", Ignore: "",
}, },
} }

View File

@ -1,27 +1,26 @@
package lexer package lexer
import ( import (
// "fmt" // "fmt"
// "github.com/localhots/penny/util" // "github.com/localhots/penny/util"
"github.com/localhots/penny/token"
"io/ioutil" "io/ioutil"
"unicode/utf8" "unicode/utf8"
"github.com/localhots/penny/token"
) )
const( const (
NoState = -1 NoState = -1
NumStates = 73 NumStates = 73
NumSymbols = 90 NumSymbols = 90
) )
type Lexer struct { type Lexer struct {
src []byte src []byte
pos int pos int
line int line int
column int column int
} }
func NewLexer(src []byte) *Lexer { func NewLexer(src []byte) *Lexer {
@ -43,9 +42,9 @@ func NewLexerFile(fpath string) (*Lexer, error) {
} }
func (this *Lexer) Scan() (tok *token.Token) { func (this *Lexer) Scan() (tok *token.Token) {
// fmt.Printf("Lexer.Scan() pos=%d\n", this.pos) // fmt.Printf("Lexer.Scan() pos=%d\n", this.pos)
tok = new(token.Token) tok = new(token.Token)
if this.pos >= len(this.src) { if this.pos >= len(this.src) {
tok.Type = token.EOF tok.Type = token.EOF
@ -56,9 +55,9 @@ func (this *Lexer) Scan() (tok *token.Token) {
tok.Type = token.INVALID tok.Type = token.INVALID
state, rune1, size := 0, rune(-1), 0 state, rune1, size := 0, rune(-1), 0
for state != -1 { for state != -1 {
// fmt.Printf("\tpos=%d, line=%d, col=%d, state=%d\n", this.pos, this.line, this.column, state) // fmt.Printf("\tpos=%d, line=%d, col=%d, state=%d\n", this.pos, this.line, this.column, state)
if this.pos >= len(this.src) { if this.pos >= len(this.src) {
rune1 = -1 rune1 = -1
} else { } else {
@ -77,7 +76,6 @@ func (this *Lexer) Scan() (tok *token.Token) {
this.column++ this.column++
} }
// Production start // Production start
if rune1 != -1 { if rune1 != -1 {
state = TransTab[state](rune1) state = TransTab[state](rune1)
@ -98,7 +96,6 @@ func (this *Lexer) Scan() (tok *token.Token) {
// } // }
// state = nextState // state = nextState
// Debug end // Debug end
if state != -1 { if state != -1 {
switch { switch {

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,3 @@
package parser package parser
import ( import (

View File

@ -1,159 +1,153 @@
package parser package parser
type( type (
actionTable [numStates]actionRow actionTable [numStates]actionRow
actionRow struct { actionRow struct {
canRecover bool canRecover bool
actions [numSymbols]action actions [numSymbols]action
} }
) )
var actionTab = actionTable{ var actionTab = actionTable{
actionRow{ // S0 actionRow{ // S0
canRecover: false, canRecover: false,
actions: [numSymbols]action{ actions: [numSymbols]action{
nil, /* INVALID */ nil, /* INVALID */
nil, /* $ */ nil, /* $ */
shift(2), /* word */ shift(2), /* word */
nil, /* number */ nil, /* number */
nil, /* = */ nil, /* = */
nil, /* && */ nil, /* && */
nil, /* || */ nil, /* || */
nil, /* ! */ nil, /* ! */
nil, /* | */ nil, /* | */
nil, /* ( */ nil, /* ( */
nil, /* ) */ nil, /* ) */
nil, /* for */ nil, /* for */
nil, /* in */ nil, /* in */
nil, /* name */ nil, /* name */
nil, /* case */ nil, /* case */
nil, /* esac */ nil, /* esac */
nil, /* ;; */ nil, /* ;; */
nil, /* if */ nil, /* if */
nil, /* then */ nil, /* then */
nil, /* fi */ nil, /* fi */
nil, /* elif */ nil, /* elif */
nil, /* else */ nil, /* else */
nil, /* while */ nil, /* while */
nil, /* until */ nil, /* until */
nil, /* { */ nil, /* { */
nil, /* } */ nil, /* } */
nil, /* do */ nil, /* do */
nil, /* done */ nil, /* done */
nil, /* < */ nil, /* < */
nil, /* <& */ nil, /* <& */
nil, /* > */ nil, /* > */
nil, /* >& */ nil, /* >& */
nil, /* >> */ nil, /* >> */
nil, /* <> */ nil, /* <> */
nil, /* >| */ nil, /* >| */
nil, /* << */ nil, /* << */
nil, /* <<- */ nil, /* <<- */
nil, /* \n */ nil, /* \n */
nil, /* nothing */ nil, /* nothing */
nil, /* & */ nil, /* & */
nil, /* ; */ nil, /* ; */
},
},
}, },
actionRow{ // S1 actionRow{ // S1
canRecover: false, canRecover: false,
actions: [numSymbols]action{ actions: [numSymbols]action{
nil, /* INVALID */ nil, /* INVALID */
accept(true), /* $ */ accept(true), /* $ */
nil, /* word */ nil, /* word */
nil, /* number */ nil, /* number */
nil, /* = */ nil, /* = */
nil, /* && */ nil, /* && */
nil, /* || */ nil, /* || */
nil, /* ! */ nil, /* ! */
nil, /* | */ nil, /* | */
nil, /* ( */ nil, /* ( */
nil, /* ) */ nil, /* ) */
nil, /* for */ nil, /* for */
nil, /* in */ nil, /* in */
nil, /* name */ nil, /* name */
nil, /* case */ nil, /* case */
nil, /* esac */ nil, /* esac */
nil, /* ;; */ nil, /* ;; */
nil, /* if */ nil, /* if */
nil, /* then */ nil, /* then */
nil, /* fi */ nil, /* fi */
nil, /* elif */ nil, /* elif */
nil, /* else */ nil, /* else */
nil, /* while */ nil, /* while */
nil, /* until */ nil, /* until */
nil, /* { */ nil, /* { */
nil, /* } */ nil, /* } */
nil, /* do */ nil, /* do */
nil, /* done */ nil, /* done */
nil, /* < */ nil, /* < */
nil, /* <& */ nil, /* <& */
nil, /* > */ nil, /* > */
nil, /* >& */ nil, /* >& */
nil, /* >> */ nil, /* >> */
nil, /* <> */ nil, /* <> */
nil, /* >| */ nil, /* >| */
nil, /* << */ nil, /* << */
nil, /* <<- */ nil, /* <<- */
nil, /* \n */ nil, /* \n */
nil, /* nothing */ nil, /* nothing */
nil, /* & */ nil, /* & */
nil, /* ; */ nil, /* ; */
},
},
}, },
actionRow{ // S2 actionRow{ // S2
canRecover: false, canRecover: false,
actions: [numSymbols]action{ actions: [numSymbols]action{
nil, /* INVALID */ nil, /* INVALID */
reduce(1), /* $, reduce: Word */ reduce(1), /* $, reduce: Word */
nil, /* word */ nil, /* word */
nil, /* number */ nil, /* number */
nil, /* = */ nil, /* = */
nil, /* && */ nil, /* && */
nil, /* || */ nil, /* || */
nil, /* ! */ nil, /* ! */
nil, /* | */ nil, /* | */
nil, /* ( */ nil, /* ( */
nil, /* ) */ nil, /* ) */
nil, /* for */ nil, /* for */
nil, /* in */ nil, /* in */
nil, /* name */ nil, /* name */
nil, /* case */ nil, /* case */
nil, /* esac */ nil, /* esac */
nil, /* ;; */ nil, /* ;; */
nil, /* if */ nil, /* if */
nil, /* then */ nil, /* then */
nil, /* fi */ nil, /* fi */
nil, /* elif */ nil, /* elif */
nil, /* else */ nil, /* else */
nil, /* while */ nil, /* while */
nil, /* until */ nil, /* until */
nil, /* { */ nil, /* { */
nil, /* } */ nil, /* } */
nil, /* do */ nil, /* do */
nil, /* done */ nil, /* done */
nil, /* < */ nil, /* < */
nil, /* <& */ nil, /* <& */
nil, /* > */ nil, /* > */
nil, /* >& */ nil, /* >& */
nil, /* >> */ nil, /* >> */
nil, /* <> */ nil, /* <> */
nil, /* >| */ nil, /* >| */
nil, /* << */ nil, /* << */
nil, /* <<- */ nil, /* <<- */
nil, /* \n */ nil, /* \n */
nil, /* nothing */ nil, /* nothing */
nil, /* & */ nil, /* & */
nil, /* ; */ nil, /* ; */
}, },
}, },
} }

View File

@ -1,19 +1,19 @@
/* /*
*/ */
package parser package parser
const numNTSymbols = 47 const numNTSymbols = 47
type(
type (
gotoTable [numStates]gotoRow gotoTable [numStates]gotoRow
gotoRow [numNTSymbols] int gotoRow [numNTSymbols]int
) )
var gotoTab = gotoTable{ var gotoTab = gotoTable{
gotoRow{ // S0 gotoRow{ // S0
-1, // S' -1, // S'
1, // Word 1, // Word
-1, // IoNumber -1, // IoNumber
-1, // AssignmentWord -1, // AssignmentWord
-1, // List -1, // List
@ -59,11 +59,10 @@ var gotoTab = gotoTable{
-1, // SeparatorOp -1, // SeparatorOp
-1, // Separator -1, // Separator
-1, // SequentialSep -1, // SequentialSep
}, },
gotoRow{ // S1 gotoRow{ // S1
-1, // S' -1, // S'
-1, // Word -1, // Word
-1, // IoNumber -1, // IoNumber
@ -111,11 +110,10 @@ var gotoTab = gotoTable{
-1, // SeparatorOp -1, // SeparatorOp
-1, // Separator -1, // Separator
-1, // SequentialSep -1, // SequentialSep
}, },
gotoRow{ // S2 gotoRow{ // S2
-1, // S' -1, // S'
-1, // Word -1, // Word
-1, // IoNumber -1, // IoNumber
@ -163,8 +161,6 @@ var gotoTab = gotoTable{
-1, // SeparatorOp -1, // SeparatorOp
-1, // Separator -1, // Separator
-1, // SequentialSep -1, // SequentialSep
}, },
} }

View File

@ -1,10 +1,9 @@
package parser package parser
import( import (
"bytes" "bytes"
"fmt"
"errors" "errors"
"fmt"
parseError "github.com/localhots/penny/errors" parseError "github.com/localhots/penny/errors"
"github.com/localhots/penny/token" "github.com/localhots/penny/token"
) )
@ -18,16 +17,16 @@ const (
// Stack // Stack
type stack struct { type stack struct {
state []int state []int
attrib []Attrib attrib []Attrib
} }
const iNITIAL_STACK_SIZE = 100 const iNITIAL_STACK_SIZE = 100
func newStack() *stack { func newStack() *stack {
return &stack{ state: make([]int, 0, iNITIAL_STACK_SIZE), return &stack{state: make([]int, 0, iNITIAL_STACK_SIZE),
attrib: make([]Attrib, 0, iNITIAL_STACK_SIZE), attrib: make([]Attrib, 0, iNITIAL_STACK_SIZE),
} }
} }
func (this *stack) reset() { func (this *stack) reset() {
@ -40,8 +39,8 @@ func (this *stack) push(s int, a Attrib) {
this.attrib = append(this.attrib, a) this.attrib = append(this.attrib, a)
} }
func(this *stack) top() int { func (this *stack) top() int {
return this.state[len(this.state) - 1] return this.state[len(this.state)-1]
} }
func (this *stack) peek(pos int) int { func (this *stack) peek(pos int) int {
@ -53,13 +52,13 @@ func (this *stack) topIndex() int {
} }
func (this *stack) popN(items int) []Attrib { func (this *stack) popN(items int) []Attrib {
lo, hi := len(this.state) - items, len(this.state) lo, hi := len(this.state)-items, len(this.state)
attrib := this.attrib[lo: hi] attrib := this.attrib[lo:hi]
this.state = this.state[:lo] this.state = this.state[:lo]
this.attrib = this.attrib[:lo] this.attrib = this.attrib[:lo]
return attrib return attrib
} }
@ -187,9 +186,8 @@ func (this *Parser) Parse(scanner Scanner) (res interface{}, err error) {
panic("Error recovery led to invalid action") panic("Error recovery led to invalid action")
} }
} }
// fmt.Printf("S%d %s %s\n", this.stack.top(), token.TokMap.TokenString(this.nextToken), action.String()) // fmt.Printf("S%d %s %s\n", this.stack.top(), token.TokMap.TokenString(this.nextToken), action.String())
switch act := action.(type) { switch act := action.(type) {
case accept: case accept:

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
package token package token
import( import (
"fmt" "fmt"
) )
@ -13,14 +12,14 @@ type Token struct {
type Type int type Type int
const( const (
INVALID Type = iota INVALID Type = iota
EOF EOF
) )
type Pos struct { type Pos struct {
Offset int Offset int
Line int Line int
Column int Column int
} }
@ -29,8 +28,8 @@ func (this Pos) String() string {
} }
type TokenMap struct { type TokenMap struct {
typeMap []string typeMap []string
idMap map[string]Type idMap map[string]Type
} }
func (this TokenMap) Id(tok Type) string { func (this TokenMap) Id(tok Type) string {
@ -101,48 +100,47 @@ var TokMap = TokenMap{
";", ";",
}, },
idMap: map[string]Type { idMap: map[string]Type{
"INVALID": 0, "INVALID": 0,
"$": 1, "$": 1,
"word": 2, "word": 2,
"number": 3, "number": 3,
"=": 4, "=": 4,
"&&": 5, "&&": 5,
"||": 6, "||": 6,
"!": 7, "!": 7,
"|": 8, "|": 8,
"(": 9, "(": 9,
")": 10, ")": 10,
"for": 11, "for": 11,
"in": 12, "in": 12,
"name": 13, "name": 13,
"case": 14, "case": 14,
"esac": 15, "esac": 15,
";;": 16, ";;": 16,
"if": 17, "if": 17,
"then": 18, "then": 18,
"fi": 19, "fi": 19,
"elif": 20, "elif": 20,
"else": 21, "else": 21,
"while": 22, "while": 22,
"until": 23, "until": 23,
"{": 24, "{": 24,
"}": 25, "}": 25,
"do": 26, "do": 26,
"done": 27, "done": 27,
"<": 28, "<": 28,
"<&": 29, "<&": 29,
">": 30, ">": 30,
">&": 31, ">&": 31,
">>": 32, ">>": 32,
"<>": 33, "<>": 33,
">|": 34, ">|": 34,
"<<": 35, "<<": 35,
"<<-": 36, "<<-": 36,
"\n": 37, "\n": 37,
"nothing": 38, "nothing": 38,
"&": 39, "&": 39,
";": 40, ";": 40,
}, },
} }

View File

@ -1,4 +1,3 @@
//Copyright 2013 Vastech SA (PTY) LTD //Copyright 2013 Vastech SA (PTY) LTD
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,3 @@
//Copyright 2013 Vastech SA (PTY) LTD //Copyright 2013 Vastech SA (PTY) LTD
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");