Adds intinc as a buildint function
This commit is contained in:
parent
a282292604
commit
5369c15e05
@ -478,6 +478,9 @@ def emitheader():
|
|||||||
emitln("def __strlen(a: str) -> str:")
|
emitln("def __strlen(a: str) -> str:")
|
||||||
emitln(" return str(len(a))")
|
emitln(" return str(len(a))")
|
||||||
emitln("")
|
emitln("")
|
||||||
|
emitln("def __intinc(a: str) -> str:")
|
||||||
|
emitln(" return str(int(a) + 1)")
|
||||||
|
emitln("")
|
||||||
emitln("# ### END OF RUNTIME ### #")
|
emitln("# ### END OF RUNTIME ### #")
|
||||||
emitln("")
|
emitln("")
|
||||||
|
|
||||||
@ -503,6 +506,8 @@ def main():
|
|||||||
mapsetkey("REGISTERID", "emit", "__emit")
|
mapsetkey("REGISTERID", "emit", "__emit")
|
||||||
mapsetkey("FUNCREG", "eq", "1")
|
mapsetkey("FUNCREG", "eq", "1")
|
||||||
mapsetkey("REGISTERID", "eq", "__eq")
|
mapsetkey("REGISTERID", "eq", "__eq")
|
||||||
|
mapsetkey("FUNCREG", "intinc", "1")
|
||||||
|
mapsetkey("REGISTERID", "intinc", "__intinc")
|
||||||
mapsetkey("FUNCREG", "lt", "1")
|
mapsetkey("FUNCREG", "lt", "1")
|
||||||
mapsetkey("REGISTERID", "lt", "__lt")
|
mapsetkey("REGISTERID", "lt", "__lt")
|
||||||
mapsetkey("FUNCREG", "not", "1")
|
mapsetkey("FUNCREG", "not", "1")
|
||||||
|
|||||||
@ -537,6 +537,9 @@ emitheader:
|
|||||||
emitln "def __strlen(a: str) -> str:"
|
emitln "def __strlen(a: str) -> str:"
|
||||||
emitln " return str(len(a))"
|
emitln " return str(len(a))"
|
||||||
emitln ""
|
emitln ""
|
||||||
|
emitln "def __intinc(a: str) -> str:"
|
||||||
|
emitln " return str(int(a) + 1)"
|
||||||
|
emitln ""
|
||||||
emitln "# ### END OF RUNTIME ### #"
|
emitln "# ### END OF RUNTIME ### #"
|
||||||
emitln ""
|
emitln ""
|
||||||
/
|
/
|
||||||
@ -564,6 +567,8 @@ main:
|
|||||||
mapsetkey "REGISTERID" "emit" "__emit"
|
mapsetkey "REGISTERID" "emit" "__emit"
|
||||||
mapsetkey "FUNCREG" "eq" "1"
|
mapsetkey "FUNCREG" "eq" "1"
|
||||||
mapsetkey "REGISTERID" "eq" "__eq"
|
mapsetkey "REGISTERID" "eq" "__eq"
|
||||||
|
mapsetkey "FUNCREG" "intinc" "1"
|
||||||
|
mapsetkey "REGISTERID" "intinc" "__intinc"
|
||||||
mapsetkey "FUNCREG" "lt" "1"
|
mapsetkey "FUNCREG" "lt" "1"
|
||||||
mapsetkey "REGISTERID" "lt" "__lt"
|
mapsetkey "REGISTERID" "lt" "__lt"
|
||||||
mapsetkey "FUNCREG" "not" "1"
|
mapsetkey "FUNCREG" "not" "1"
|
||||||
|
|||||||
@ -810,6 +810,19 @@ emitheader:
|
|||||||
emitln " return buffer;"
|
emitln " return buffer;"
|
||||||
emitln "}"
|
emitln "}"
|
||||||
emitln ""
|
emitln ""
|
||||||
|
emitln "char * __intinc(char * inp)"
|
||||||
|
emitln "{"
|
||||||
|
emitln " char * buffer = malloc(20);"
|
||||||
|
emitln " char * endptr;"
|
||||||
|
emitln " unsigned long long number = strtoull(inp, &endptr, 10);"
|
||||||
|
emit " snprintf(buffer, 20, "
|
||||||
|
emit quote
|
||||||
|
emit "%llu"
|
||||||
|
emit quote
|
||||||
|
emitln ", number + 1);"
|
||||||
|
emitln " return buffer;"
|
||||||
|
emitln "}"
|
||||||
|
emitln ""
|
||||||
emitln "// ### END OF RUNTIME ### //"
|
emitln "// ### END OF RUNTIME ### //"
|
||||||
emitln ""
|
emitln ""
|
||||||
return
|
return
|
||||||
@ -846,6 +859,8 @@ main:
|
|||||||
mapsetkey "REGISTERID" "emit" "__emit"
|
mapsetkey "REGISTERID" "emit" "__emit"
|
||||||
mapsetkey "FUNCREG" "eq" "1"
|
mapsetkey "FUNCREG" "eq" "1"
|
||||||
mapsetkey "REGISTERID" "eq" "__eq"
|
mapsetkey "REGISTERID" "eq" "__eq"
|
||||||
|
mapsetkey "FUNCREG" "intinc" "1"
|
||||||
|
mapsetkey "REGISTERID" "intinc" "__intinc"
|
||||||
mapsetkey "FUNCREG" "lt" "1"
|
mapsetkey "FUNCREG" "lt" "1"
|
||||||
mapsetkey "REGISTERID" "lt" "__lt"
|
mapsetkey "REGISTERID" "lt" "__lt"
|
||||||
mapsetkey "FUNCREG" "not" "1"
|
mapsetkey "FUNCREG" "not" "1"
|
||||||
|
|||||||
@ -155,6 +155,12 @@ Return true if the given strings are the same.
|
|||||||
|
|
||||||
Return true if a would sort before b.
|
Return true if a would sort before b.
|
||||||
|
|
||||||
|
#### intinc
|
||||||
|
|
||||||
|
Assumes `a` is a string containing solely a decimal integer.
|
||||||
|
|
||||||
|
Returns a increased by one.
|
||||||
|
|
||||||
#### mapclear mapname
|
#### mapclear mapname
|
||||||
|
|
||||||
Maps are global and can be used from any function.
|
Maps are global and can be used from any function.
|
||||||
|
|||||||
5
tests/test_stdlib_functions/test_intinc.exp.stdout
Normal file
5
tests/test_stdlib_functions/test_intinc.exp.stdout
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
0 + 1: 1
|
||||||
|
5 + 1: 6
|
||||||
|
9 + 1: 10
|
||||||
|
15 + 1: 16
|
||||||
|
99 + 1: 100
|
||||||
28
tests/test_stdlib_functions/test_intinc.lang0
Normal file
28
tests/test_stdlib_functions/test_intinc.lang0
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
main:
|
||||||
|
declare result
|
||||||
|
|
||||||
|
emit "0 + 1: "
|
||||||
|
calc result intinc "0"
|
||||||
|
emit result
|
||||||
|
emit eol
|
||||||
|
|
||||||
|
emit "5 + 1: "
|
||||||
|
calc result intinc "5"
|
||||||
|
emit result
|
||||||
|
emit eol
|
||||||
|
|
||||||
|
emit "9 + 1: "
|
||||||
|
calc result intinc "9"
|
||||||
|
emit result
|
||||||
|
emit eol
|
||||||
|
|
||||||
|
emit "15 + 1: "
|
||||||
|
calc result intinc "15"
|
||||||
|
emit result
|
||||||
|
emit eol
|
||||||
|
|
||||||
|
emit "99 + 1: "
|
||||||
|
calc result intinc "99"
|
||||||
|
emit result
|
||||||
|
emit eol
|
||||||
|
/
|
||||||
Loading…
x
Reference in New Issue
Block a user