Skip to content

Commit

Permalink
feat(parser): started working
Browse files Browse the repository at this point in the history
  • Loading branch information
xNaCly committed May 5, 2023
1 parent 5752bb2 commit e46d9d7
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 5 deletions.
13 changes: 8 additions & 5 deletions emmy.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,33 @@ import (
"fmt"
"log"
"os"
"strings"

"github.com/xNaCly/emmy/consts"
"github.com/xNaCly/emmy/lexer"
"github.com/xNaCly/emmy/parser"
)

func debug_printToken(t []consts.Token) {
func run(in string, scanner *lexer.Scanner, parser *parser.Parser) {
t := scanner.NewInput(os.Args[1]).Start()
for _, v := range t {
fmt.Printf("[%s][%d][%v]\n", consts.KIND_LOOKUP[v.Kind], v.Pos, v.Content)
}
parser.NewInput(t)
}

func main() {
l := lexer.NewScanner()
p := parser.NewParser()
if len(os.Args) > 1 {
debug_printToken(lexer.NewScanner().NewInput(os.Args[1]).Start())
run(os.Args[1], l, p)
return
}
log.Println("welcome to the emmy repl")
prompt := "ε> "
reader := bufio.NewReader(os.Stdin)
l := lexer.NewScanner()
for {
fmt.Print(prompt)
line, _ := reader.ReadString('\n')
debug_printToken(l.NewInput(strings.TrimSpace(line)).Start())
run(line, l, p)
}
}
2 changes: 2 additions & 0 deletions lexer/lexer.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ func (s *Scanner) Start() []consts.Token {
var val any
var raw string
switch s.cc {
case ' ':
kind = consts.UNKNOWN
case '+':
kind = consts.PLUS
case '-':
Expand Down
21 changes: 21 additions & 0 deletions parser/parser.go
Original file line number Diff line number Diff line change
@@ -1 +1,22 @@
package parser

import "github.com/xNaCly/emmy/consts"

type Parser struct {
input []consts.Token
pos int
}

func NewParser() *Parser {
return &Parser{
input: nil,
pos: 0,
}
}

func (p *Parser) NewInput(in []consts.Token) *Parser {
p.input = in
return p
}

func (p *Parser) parse() {}

0 comments on commit e46d9d7

Please sign in to comment.