initial commit

This commit is contained in:
Tan, Kian-ting 2025-07-28 22:40:06 +08:00
commit 94695c20e7
3 changed files with 75 additions and 0 deletions

4
Project.toml Normal file
View file

@ -0,0 +1,4 @@
name = "TComp"
uuid = "b858fc1c-1812-4b3c-a2e6-a1a64b2d44f1"
authors = ["Tan Kian-ting <chenjt30@gmail.com>"]
version = "0.1.0"

7
src/TComp.jl Normal file
View file

@ -0,0 +1,7 @@
module TComp
include("./parser.jl")
using .Parser
greet() = print("Hello World!")
end # module

64
src/parser.jl Normal file
View file

@ -0,0 +1,64 @@
module Parser
patternList = [("int", "\\d+"),
("id", "[_a-zA-Z][_0-9a-zA-Z]*"),
("l_paren", "[\\(]"),
("r_paren", "[\\)]"),
("plus", "[+]"),
("minus", "[\\-]"),
("mul", "[\\*]"),
("div", "[\\\\]"),
("sp", "\\s+"),
("comma", "[,]"),
("amp", "[&]"),
("assign", "[=]"),
("lambda", "[=][>]"),
]
function combineUnit(tup)
retString = "(?P<" * tup[1] * ">" * tup[2] * ")"
#retStringRegex = Regex(retString)
return retString
end
tmp = join(map(combineUnit, patternList), "|")
matchEachItem = Regex(tmp)
matchAll = "^(" * tmp * ")+\$"
matchEntirely = Regex(matchAll)
print(matchEntirely)
inp = "123 + 345 - 456 * a ^^^"
print("~~~\n")
isEntirelyMatched = match(matchEntirely, inp)
if isEntirelyMatched == false
print("illegal tokens contained.")
end
mI = eachmatch(matchEachItem, inp)
function processKeys(x)
keys_ = keys(x)
return filter((i) -> x[i] != nothing, keys_)[1]
end
matchedList = map((x)->x.match, collect(mI))
groupNameList = map(processKeys, collect(mI))
list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
zippedTokenList = collect(zip(matchedList, groupNameList))
print(zippedTokenList)
end