forked from cosmonaut/wraith-lang
add cmake build process + switch to bison
parent
5861d07b07
commit
a849fa73c4
|
@ -0,0 +1,2 @@
|
||||||
|
build/
|
||||||
|
CMakeCache.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}
|
||||||
|
)
|
|
@ -1,3 +1,7 @@
|
||||||
|
%{
|
||||||
|
#include "y.tab.h"
|
||||||
|
%}
|
||||||
|
|
||||||
%option noyywrap
|
%option noyywrap
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
10
wraith.y
10
wraith.y
|
@ -2,7 +2,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "ast.h"
|
#include "ast.h"
|
||||||
#include "stack.h"
|
#include "stack.h"
|
||||||
#define YYSTYPE struct Node*
|
|
||||||
void yyerror(FILE *fp, char *s)
|
void yyerror(FILE *fp, char *s)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "%s\n", s);
|
fprintf (stderr, "%s\n", s);
|
||||||
|
@ -10,10 +9,13 @@ void yyerror(FILE *fp, char *s)
|
||||||
|
|
||||||
Stack *stack;
|
Stack *stack;
|
||||||
|
|
||||||
#define YYDEBUG 1
|
extern char *yytext;
|
||||||
int yydebug=1;
|
extern int yylex (void);
|
||||||
|
extern FILE *yyin;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
%define api.value.type {struct Node*}
|
||||||
|
|
||||||
%token NUMBER
|
%token NUMBER
|
||||||
%token INT
|
%token INT
|
||||||
%token UINT
|
%token UINT
|
||||||
|
@ -234,8 +236,6 @@ Declarations : Declaration Declarations
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
|
|
||||||
#include "lex.yy.c"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
|
|
Loading…
Reference in New Issue