func NewStdin() *Parser {
	return &Parser{
		funcTempVars: -1,
		Lex: &lex.Lex{
			File: &obj.File{Path: "<stdin>"},
			Line: 1,
		},
	}
}
NewStdin returns new instance of parser from standard input.
package parser
import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"unicode"
	"github.com/fract-lang/fract/lex"
	"github.com/fract-lang/fract/oop"
	"github.com/fract-lang/fract/pkg/fract"
	"github.com/fract-lang/fract/pkg/obj"
)
var (
	defers []*funcCall
)
type Parser struct {
	defs         oop.DefMap
	packages     []*importInfo
	funcTempVars int  
	loopCount    int
	funcCount    int
	index        int
	packageName  string    
	returnVal    *oop.Val  
	Lex    *lex.Lex
	Tokens [][]obj.Token  
}
func New(fp string) *Parser {
	file, _ := os.Open(fp)
	bytes, _ := os.ReadFile(fp)
	fileObj := &obj.File{Path: fp, File: file}
	fileObj.Lines = strings.Split(string(bytes), "\n")
	for i, line := range fileObj.Lines {
		fileObj.Lines[i] = strings.TrimRightFunc(line, unicode.IsSpace)
	}
	return &Parser{
		funcTempVars: -1,
		Lex:          &lex.Lex{File: fileObj, Line: 1},
	}
}