start working on parser
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -50,6 +50,7 @@ modules.order
|
|||||||
Module.symvers
|
Module.symvers
|
||||||
Mkfile.old
|
Mkfile.old
|
||||||
dkms.conf
|
dkms.conf
|
||||||
|
vcpkg_installed/
|
||||||
|
|
||||||
bin
|
bin
|
||||||
|
|
||||||
|
|||||||
10
.vscode/c_cpp_properties.json
vendored
10
.vscode/c_cpp_properties.json
vendored
@@ -2,14 +2,14 @@
|
|||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "Linux",
|
"name": "Linux",
|
||||||
"includePath": [
|
|
||||||
"${workspaceFolder}/**"
|
|
||||||
],
|
|
||||||
"defines": [],
|
|
||||||
"compilerPath": "/usr/bin/clang",
|
"compilerPath": "/usr/bin/clang",
|
||||||
"cStandard": "c17",
|
"cStandard": "c17",
|
||||||
"cppStandard": "c++17",
|
"cppStandard": "c++17",
|
||||||
"intelliSenseMode": "linux-clang-x64"
|
"intelliSenseMode": "linux-clang-x64",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**"
|
||||||
|
],
|
||||||
|
"defines": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"version": 4
|
"version": 4
|
||||||
|
|||||||
@@ -14,21 +14,9 @@ int yywrap(void *) {
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
\"((\\([\"\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^\\\"\n])*\" {
|
"." { return TOKEN_DOT; }
|
||||||
return TOKEN_STRING;
|
"," {return TOKEN_COMMA; }
|
||||||
}
|
":" {return TOKEN_COLON; }
|
||||||
|
|
||||||
\'((\\([\'\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^\\\'\n])*\' {
|
|
||||||
return TOKEN_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
((([0-9]+(\.[0-9]+)?)|(\.[0-9]+))(e((\-|\+)?([0-9]+(\.[0-9]+)?)))?) {
|
|
||||||
return TOKEN_NUMBER;
|
|
||||||
}
|
|
||||||
|
|
||||||
([0-9]+\/[0-9]+) {
|
|
||||||
return TOKEN_FRACTION;
|
|
||||||
}
|
|
||||||
|
|
||||||
"not"[ \t]+"in" { return TOKEN_NOT_IN; }
|
"not"[ \t]+"in" { return TOKEN_NOT_IN; }
|
||||||
"&&" { return TOKEN_AND; }
|
"&&" { return TOKEN_AND; }
|
||||||
@@ -79,9 +67,21 @@ int yywrap(void *) {
|
|||||||
|
|
||||||
[a-zA-Z_][a-zA-Z0-9_]* { return TOKEN_IDENTIFIER; }
|
[a-zA-Z_][a-zA-Z0-9_]* { return TOKEN_IDENTIFIER; }
|
||||||
|
|
||||||
"." { return TOKEN_DOT; }
|
\"((\\([\"\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^\\\"\n])*\" {
|
||||||
"," {return TOKEN_COMMA; }
|
return TOKEN_STRING;
|
||||||
":" {return TOKEN_COLON; }
|
}
|
||||||
|
|
||||||
|
\'((\\([\'\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^\\\'\n])*\' {
|
||||||
|
return TOKEN_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
((([0-9]+(\.[0-9]+)?)|(\.[0-9]+))(e((\-|\+)?([0-9]+(\.[0-9]+)?)))?) {
|
||||||
|
return TOKEN_NUMBER;
|
||||||
|
}
|
||||||
|
|
||||||
|
([0-9]+\/[0-9]+) {
|
||||||
|
return TOKEN_FRACTION;
|
||||||
|
}
|
||||||
|
|
||||||
\n { return TOKEN_NEW_LINE; }
|
\n { return TOKEN_NEW_LINE; }
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ int yywrap(void *) {
|
|||||||
|
|
||||||
. {
|
. {
|
||||||
GET_STATE
|
GET_STATE
|
||||||
fprintf(stderr, "%s:%u:%u: unexpected character '%s'\n", state->path, yylineno+1, COLUMN_NO+1, yytext);
|
fprintf(stderr, "%s:%u:%u error: unexpected character '%s'\n", state->path, yylineno, COLUMN_NO+1, yytext);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
@@ -15,7 +15,7 @@ void lexer(LexerState state) {
|
|||||||
Token * token_struct = create_token(
|
Token * token_struct = create_token(
|
||||||
token,
|
token,
|
||||||
yyget_lineno(scanner),
|
yyget_lineno(scanner),
|
||||||
state.current_column,
|
state.current_column+1,
|
||||||
yyget_text(scanner)
|
yyget_text(scanner)
|
||||||
);
|
);
|
||||||
darray_push(state.tokens, token_struct);
|
darray_push(state.tokens, token_struct);
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
ar_memory_init();
|
||||||
const char * path = "test.ar";
|
const char * path = "test.ar";
|
||||||
DArray tokens;
|
DArray tokens;
|
||||||
|
|
||||||
@@ -33,7 +33,5 @@ int main() {
|
|||||||
|
|
||||||
darray_free(&parsed,free_parsed_value);
|
darray_free(&parsed,free_parsed_value);
|
||||||
|
|
||||||
ar_memory_init();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,11 @@ ParsedValue *parse_token(DArray *tokens, size_t *index) {
|
|||||||
case TOKEN_NEW_LINE:
|
case TOKEN_NEW_LINE:
|
||||||
(*index)++;
|
(*index)++;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
case TOKEN_INDENT:
|
||||||
|
fprintf(stderr, "error: \n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Panic: %s\n", "unreachable");
|
fprintf(stderr, "Panic: unreachable\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,6 +43,5 @@ void free_parsed_value(void *ptr) {
|
|||||||
case AST_STRING:
|
case AST_STRING:
|
||||||
free(tagged->data);
|
free(tagged->data);
|
||||||
break;
|
break;
|
||||||
// Add cases if needed
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
14
vcpkg-configuration.json
Normal file
14
vcpkg-configuration.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"default-registry": {
|
||||||
|
"kind": "git",
|
||||||
|
"baseline": "a9eee3b18df395dbb8be71a31bd78ea441056e42",
|
||||||
|
"repository": "https://github.com/microsoft/vcpkg"
|
||||||
|
},
|
||||||
|
"registries": [
|
||||||
|
{
|
||||||
|
"kind": "artifact",
|
||||||
|
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
|
||||||
|
"name": "microsoft"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
6
vcpkg.json
Normal file
6
vcpkg.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"dependencies": [
|
||||||
|
"bdwgc",
|
||||||
|
"json-c"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user