Stub for parsing arguments

This commit is contained in:
Sasha Koshka 2022-09-22 17:51:45 -04:00
parent 25cc74a6d9
commit f6ff3c725d
2 changed files with 101 additions and 0 deletions

61
analyzer/argument.go Normal file
View File

@ -0,0 +1,61 @@
package analyzer
import "git.tebibyte.media/arf/arf/parser"
// import "git.tebibyte.media/arf/arf/infoerr"
// Argument represents a value that can be placed anywhere a value goes. This
// allows things like phrases being arguments to other phrases.
type Argument interface {
// Phrase
// Dereference
// Subscript
// Object
// Array
// Variable
// IntLiteral
// UIntLiteral
// FloatLiteral
// StringLiteral
// RuneLiteral
ToString (indent int) (output string)
}
// analyzeArgument analyzes an argument
func (analyzer AnalysisOperation) analyzeArgument (
inputArgument parser.Argument,
) (
outputArgument Argument,
) {
switch inputArgument.Kind() {
case parser.ArgumentKindNil:
case parser.ArgumentKindPhrase:
case parser.ArgumentKindDereference:
case parser.ArgumentKindSubscript:
case parser.ArgumentKindObjectDefaultValues:
case parser.ArgumentKindArrayDefaultValues:
case parser.ArgumentKindIdentifier:
case parser.ArgumentKindDeclaration:
case parser.ArgumentKindInt:
case parser.ArgumentKindUInt:
case parser.ArgumentKindFloat:
case parser.ArgumentKindString:
case parser.ArgumentKindRune:
case parser.ArgumentKindOperator:
}
return
}

40
analyzer/literals.go Normal file
View File

@ -0,0 +1,40 @@
package analyzer
import "fmt"
type IntLiteral int64
type UIntLiteral uint64
type FloatLiteral float64
type StringLiteral string
type RuneLiteral rune
// ToString outputs the data in the argument as a string.
func (literal IntLiteral) ToString (indent int) (output string) {
output += doIndent(indent, fmt.Sprint("arg int ", literal, "\n"))
return
}
// ToString outputs the data in the argument as a string.
func (literal UIntLiteral) ToString (indent int) (output string) {
output += doIndent(indent, fmt.Sprint("arg uint ", literal, "\n"))
return
}
// ToString outputs the data in the argument as a string.
func (literal FloatLiteral) ToString (indent int) (output string) {
output += doIndent(indent, fmt.Sprint("arg float ", literal, "\n"))
return
}
// ToString outputs the data in the argument as a string.
func (literal StringLiteral) ToString (indent int) (output string) {
output += doIndent(indent, fmt.Sprint("arg string \"", literal, "\"\n"))
return
}
// ToString outputs the data in the argument as a string.
func (literal RuneLiteral) ToString (indent int) (output string) {
output += doIndent(indent, fmt.Sprint("arg rune '", literal, "'\n"))
return
}