Browse Source

add cmake build process + switch to bison

pull/1/head
cosmonaut 5 months ago
parent
commit
a849fa73c4
  1. 2
      .gitignore
  2. 21
      CMakeLists.txt
  3. 4
      wraith.lex
  4. 10
      wraith.y

2
.gitignore

@ -0,0 +1,2 @@
build/
CMakeCache.txt

21
CMakeLists.txt

@ -0,0 +1,21 @@
cmake_minimum_required(VERSION 2.8.12)
project(WRAITH_LANG C)
set(CMAKE_C_STANDARD 99)
find_package(BISON)
find_package(FLEX)
include_directories(${CMAKE_SOURCE_DIR})
BISON_TARGET(Parser wraith.y ${CMAKE_CURRENT_BINARY_DIR}/y.tab.c COMPILE_FLAGS -d)
FLEX_TARGET(Scanner wraith.lex ${CMAKE_CURRENT_BINARY_DIR}/lex.yy.c)
ADD_FLEX_BISON_DEPENDENCY(Scanner Parser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(
wraith_compile
${BISON_Parser_OUTPUTS}
${FLEX_Scanner_OUTPUTS}
)

4
wraith.lex

@ -1,3 +1,7 @@
%{
#include "y.tab.h"
%}
%option noyywrap
%%

10
wraith.y

@ -2,7 +2,6 @@
#include <stdio.h>
#include "ast.h"
#include "stack.h"
#define YYSTYPE struct Node*
void yyerror(FILE *fp, char *s)
{
fprintf (stderr, "%s\n", s);
@ -10,10 +9,13 @@ void yyerror(FILE *fp, char *s)
Stack *stack;
#define YYDEBUG 1
int yydebug=1;
extern char *yytext;
extern int yylex (void);
extern FILE *yyin;
%}
%define api.value.type {struct Node*}
%token NUMBER
%token INT
%token UINT
@ -234,8 +236,6 @@ Declarations : Declaration Declarations
}
%%
#include "lex.yy.c"
int main(int argc, char *argv[])
{
if (argc < 2)

Loading…
Cancel
Save