diff --git a/docs/.nojekyll b/docs/.nojekyll
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index 54f0811..0000000
--- a/docs/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Intro
-
-> Fig is a modern
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
deleted file mode 100644
index b536964..0000000
--- a/docs/_sidebar.md
+++ /dev/null
@@ -1,2 +0,0 @@
-* [Home](/)
-* [Guide](guide.md "The greatest guide in the world")
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index 57a96bb..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- The Fig Programming Language
-
-
-
-
-
-
- 加载中 Loading... 🥰
-
-
-
-
-
diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md
deleted file mode 100644
index b3cc80d..0000000
--- a/docs/zh-cn/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# 简介
-
-> Fig 是一个现代、简单的语言
diff --git a/include/Ast/astBase.hpp b/include/Ast/astBase.hpp
index 871f185..42e6448 100644
--- a/include/Ast/astBase.hpp
+++ b/include/Ast/astBase.hpp
@@ -52,37 +52,37 @@ namespace Fig::Ast
ContinueSt,
};
- static const std::unordered_map astTypeToString{
- /* Base Class */
- {AstType::_AstBase, FString(u8"Ast")},
- {AstType::StatementBase, FString(u8"Statement")},
- {AstType::ExpressionBase, FString(u8"Expression")},
- /* Expression */
- {AstType::ValueExpr, FString(u8"ValueExpr")},
- {AstType::LambdaExpr, FString(u8"LambdaExpr")},
- {AstType::UnaryExpr, FString(u8"UnaryExpr")},
- {AstType::BinaryExpr, FString(u8"BinaryExpr")},
- {AstType::TernaryExpr, FString(u8"TernaryExpr")},
+ // static const std::unordered_map astTypeToString{
+ // /* Base Class */
+ // {AstType::_AstBase, FString(u8"Ast")},
+ // {AstType::StatementBase, FString(u8"Statement")},
+ // {AstType::ExpressionBase, FString(u8"Expression")},
+ // /* Expression */
+ // {AstType::ValueExpr, FString(u8"ValueExpr")},
+ // {AstType::LambdaExpr, FString(u8"LambdaExpr")},
+ // {AstType::UnaryExpr, FString(u8"UnaryExpr")},
+ // {AstType::BinaryExpr, FString(u8"BinaryExpr")},
+ // {AstType::TernaryExpr, FString(u8"TernaryExpr")},
- {AstType::InitExpr, FString(u8"InitExpr")},
+ // {AstType::InitExpr, FString(u8"InitExpr")},
- /* Statement */
- {AstType::BlockStatement, FString(u8"BlockStatement")},
+ // /* Statement */
+ // {AstType::BlockStatement, FString(u8"BlockStatement")},
- {AstType::VarDefSt, FString(u8"VarSt")},
- {AstType::FunctionDefSt, FString(u8"FunctionDefSt")},
- {AstType::StructSt, FString(u8"StructSt")},
- {AstType::ImplementSt, FString(u8"ImplementSt")},
+ // {AstType::VarDefSt, FString(u8"VarSt")},
+ // {AstType::FunctionDefSt, FString(u8"FunctionDefSt")},
+ // {AstType::StructSt, FString(u8"StructSt")},
+ // {AstType::ImplementSt, FString(u8"ImplementSt")},
- {AstType::IfSt, FString(u8"IfSt")},
- {AstType::ElseSt, FString(u8"ElseSt")},
- {AstType::ElseIfSt, FString(u8"ElseIfSt")},
- {AstType::VarAssignSt, FString(u8"VarAssignSt")},
- {AstType::WhileSt, FString(u8"WhileSt")},
- {AstType::ReturnSt, FString(u8"ReturnSt")},
- {AstType::BreakSt, FString(u8"BreakSt")},
- {AstType::ContinueSt, FString(u8"ContinueSt")},
- };
+ // {AstType::IfSt, FString(u8"IfSt")},
+ // {AstType::ElseSt, FString(u8"ElseSt")},
+ // {AstType::ElseIfSt, FString(u8"ElseIfSt")},
+ // {AstType::VarAssignSt, FString(u8"VarAssignSt")},
+ // {AstType::WhileSt, FString(u8"WhileSt")},
+ // {AstType::ReturnSt, FString(u8"ReturnSt")},
+ // {AstType::BreakSt, FString(u8"BreakSt")},
+ // {AstType::ContinueSt, FString(u8"ContinueSt")},
+ // };
struct AstAddressInfo
{
@@ -111,7 +111,9 @@ namespace Fig::Ast
virtual FString typeName()
{
- return astTypeToString.at(type);
+ return FString::fromStringView(
+ FStringView::fromBasicStringView(magic_enum::enum_name(type))
+ );
}
virtual FString toString()
{
diff --git a/src/main.cpp b/src/main.cpp
index a652563..529ccb4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -71,7 +71,12 @@ int main(int argc, char **argv)
{
argparse::ArgumentParser program("Fig Interpreter", Fig::Core::VERSION.data());
program.add_argument("source")
- .help("source file to be interpreted");
+ .help("source file to be interpreted")
+ .default_value(std::string(""));
+ program.add_argument("-v", "--version")
+ .help("get the version of Fig Interpreter")
+ .default_value(false)
+ .implicit_value(true);
// interpreter
try
@@ -83,8 +88,17 @@ int main(int argc, char **argv)
std::cerr << e.what() << '\n';
return 1;
}
-
+ if (program.get("--version"))
+ {
+ std::print("Fig Interpreter version {}\n", Fig::Core::VERSION);
+ return 0;
+ }
Fig::FString sourcePath(program.get("source"));
+ if (sourcePath.empty())
+ {
+ std::cerr << "No source file provided.\n";
+ return 1;
+ }
std::ifstream file(sourcePath.toBasicString());
if (!file.is_open())
{
diff --git a/test.fig b/test.fig
index e69de29..509a2ef 100644
--- a/test.fig
+++ b/test.fig
@@ -0,0 +1,5 @@
+while (true)
+{
+ __fstdout_println("1");
+ break;
+}
\ No newline at end of file