mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 14:18:42 +01:00
Merge branch 'master' into functional
This commit is contained in:
22
.gitignore
vendored
22
.gitignore
vendored
@ -1,23 +1,27 @@
|
|||||||
# Build outputs.
|
# Build outputs.
|
||||||
bin/
|
/bin
|
||||||
lib/
|
/lib
|
||||||
wren
|
/wren
|
||||||
|
|
||||||
# Intermediate files.
|
# Intermediate files.
|
||||||
build/
|
/build
|
||||||
deps/
|
/deps
|
||||||
.sass-cache/
|
/.sass-cache
|
||||||
|
*.pyc
|
||||||
|
|
||||||
# I leave a temporary Wren script at the top level so that I can quickly test
|
# I leave a temporary Wren script at the top level so that I can quickly test
|
||||||
# stuff.
|
# stuff.
|
||||||
scratch.wren
|
/scratch.wren
|
||||||
|
|
||||||
# The baseline file is machine-specific, so doesn't get checked in.
|
# The baseline file is machine-specific, so doesn't get checked in.
|
||||||
test/benchmark/baseline.txt
|
/test/benchmark/baseline.txt
|
||||||
|
|
||||||
# XCode user-specific stuff.
|
# XCode user-specific stuff.
|
||||||
xcuserdata/
|
xcuserdata/
|
||||||
*.xccheckout
|
|
||||||
|
# Allow Visual Studio project files.
|
||||||
|
!wren/
|
||||||
|
!wren_lib/
|
||||||
|
|
||||||
# Visual Studio cache files.
|
# Visual Studio cache files.
|
||||||
ipch/
|
ipch/
|
||||||
|
|||||||
@ -328,7 +328,7 @@ constructors, etc.
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
All state stored in instances is stored in *fields*. Each field has a named
|
All state stored in instances is stored in *fields*. Each field has a name
|
||||||
that starts with an underscore.
|
that starts with an underscore.
|
||||||
|
|
||||||
:::wren
|
:::wren
|
||||||
@ -503,7 +503,7 @@ This means you can do `super` calls inside a constructor:
|
|||||||
**TODO: Integrate better into page. Should explain this before mentioning
|
**TODO: Integrate better into page. Should explain this before mentioning
|
||||||
super above.**
|
super above.**
|
||||||
|
|
||||||
Sometimes you want to invoke a method on yourself, but only methods defined in
|
Sometimes you want to invoke a method on yourself, but using methods defined in
|
||||||
one of your [superclasses](classes.html#inheritance). You typically do this in
|
one of your [superclasses](classes.html#inheritance). You typically do this in
|
||||||
an overridden method when you want to access the original method being
|
an overridden method when you want to access the original method being
|
||||||
overridden.
|
overridden.
|
||||||
|
|||||||
@ -8,6 +8,13 @@
|
|||||||
#include "wren.h"
|
#include "wren.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
typedef struct sFileRequestData
|
||||||
|
{
|
||||||
|
WrenValue* fiber;
|
||||||
|
uv_buf_t buffer;
|
||||||
|
} FileRequestData;
|
||||||
|
|
||||||
static const int stdinDescriptor = 0;
|
static const int stdinDescriptor = 0;
|
||||||
|
|
||||||
@ -67,8 +74,12 @@ static bool handleRequestError(uv_fs_t* request)
|
|||||||
{
|
{
|
||||||
if (request->result >= 0) return false;
|
if (request->result >= 0) return false;
|
||||||
|
|
||||||
WrenValue* fiber = (WrenValue*)request->data;
|
FileRequestData* data = (FileRequestData*)request->data;
|
||||||
|
WrenValue* fiber = (WrenValue*)data->fiber;
|
||||||
|
|
||||||
schedulerResumeError(fiber, uv_strerror((int)request->result));
|
schedulerResumeError(fiber, uv_strerror((int)request->result));
|
||||||
|
|
||||||
|
free(data);
|
||||||
uv_fs_req_cleanup(request);
|
uv_fs_req_cleanup(request);
|
||||||
free(request);
|
free(request);
|
||||||
return true;
|
return true;
|
||||||
@ -78,7 +89,11 @@ static bool handleRequestError(uv_fs_t* request)
|
|||||||
uv_fs_t* createRequest(WrenValue* fiber)
|
uv_fs_t* createRequest(WrenValue* fiber)
|
||||||
{
|
{
|
||||||
uv_fs_t* request = (uv_fs_t*)malloc(sizeof(uv_fs_t));
|
uv_fs_t* request = (uv_fs_t*)malloc(sizeof(uv_fs_t));
|
||||||
request->data = fiber;
|
|
||||||
|
FileRequestData* data = (FileRequestData*)malloc(sizeof(FileRequestData));
|
||||||
|
data->fiber = fiber;
|
||||||
|
|
||||||
|
request->data = data;
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,8 +102,10 @@ uv_fs_t* createRequest(WrenValue* fiber)
|
|||||||
// Returns the fiber that should be resumed after [request] completes.
|
// Returns the fiber that should be resumed after [request] completes.
|
||||||
WrenValue* freeRequest(uv_fs_t* request)
|
WrenValue* freeRequest(uv_fs_t* request)
|
||||||
{
|
{
|
||||||
WrenValue* fiber = (WrenValue*)request->data;
|
FileRequestData* data = (FileRequestData*)request->data;
|
||||||
|
WrenValue* fiber = data->fiber;
|
||||||
|
|
||||||
|
free(data);
|
||||||
uv_fs_req_cleanup(request);
|
uv_fs_req_cleanup(request);
|
||||||
free(request);
|
free(request);
|
||||||
|
|
||||||
@ -111,7 +128,7 @@ void fileOpen(WrenVM* vm)
|
|||||||
uv_fs_t* request = createRequest(wrenGetArgumentValue(vm, 2));
|
uv_fs_t* request = createRequest(wrenGetArgumentValue(vm, 2));
|
||||||
|
|
||||||
// TODO: Allow controlling flags and modes.
|
// TODO: Allow controlling flags and modes.
|
||||||
uv_fs_open(getLoop(), request, path, O_RDONLY, S_IRUSR, openCallback);
|
uv_fs_open(getLoop(), request, path, O_RDONLY, 0, openCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called by libuv when the stat call for size completes.
|
// Called by libuv when the stat call for size completes.
|
||||||
@ -171,7 +188,9 @@ static void fileReadBytesCallback(uv_fs_t* request)
|
|||||||
{
|
{
|
||||||
if (handleRequestError(request)) return;
|
if (handleRequestError(request)) return;
|
||||||
|
|
||||||
uv_buf_t buffer = request->bufs[0];
|
FileRequestData* data = (FileRequestData*)request->data;
|
||||||
|
uv_buf_t buffer = data->buffer;
|
||||||
|
|
||||||
WrenValue* fiber = freeRequest(request);
|
WrenValue* fiber = freeRequest(request);
|
||||||
|
|
||||||
// TODO: Having to copy the bytes here is a drag. It would be good if Wren's
|
// TODO: Having to copy the bytes here is a drag. It would be good if Wren's
|
||||||
@ -190,12 +209,14 @@ void fileReadBytes(WrenVM* vm)
|
|||||||
int fd = *(int*)wrenGetArgumentForeign(vm, 0);
|
int fd = *(int*)wrenGetArgumentForeign(vm, 0);
|
||||||
// TODO: Assert fd != -1.
|
// TODO: Assert fd != -1.
|
||||||
|
|
||||||
uv_buf_t buffer;
|
FileRequestData* data = (FileRequestData*)request->data;
|
||||||
buffer.len = (size_t)wrenGetArgumentDouble(vm, 1);
|
size_t length = (size_t)wrenGetArgumentDouble(vm, 1);
|
||||||
buffer.base = (char*)malloc(buffer.len);
|
|
||||||
|
data->buffer.len = length;
|
||||||
|
data->buffer.base = (char*)malloc(length);
|
||||||
|
|
||||||
// TODO: Allow passing in offset.
|
// TODO: Allow passing in offset.
|
||||||
uv_fs_read(getLoop(), request, fd, &buffer, 1, 0, fileReadBytesCallback);
|
uv_fs_read(getLoop(), request, fd, &data->buffer, 1, 0, fileReadBytesCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fileSize(WrenVM* vm)
|
void fileSize(WrenVM* vm)
|
||||||
|
|||||||
113
util/msvc2013/wren/wren.vcxproj
Normal file
113
util/msvc2013/wren/wren.vcxproj
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{EBF43135-4A7A-400A-8F23-DF49907025AA}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>wren</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v120</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v120</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)..\..\src\include</IncludePath>
|
||||||
|
<LibraryPath>$(SolutionDir)..\..\lib\$(Configuration)\;$(SolutionDir)..\..\util\deps\libuv\Release\lib\;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86)</LibraryPath>
|
||||||
|
<OutDir>$(SolutionDir)..\..\bin\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)..\..\build\cli\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<IncludePath>$(SolutionDir)..\..\src\include;$(IncludePath)</IncludePath>
|
||||||
|
<LibraryPath>$(SolutionDir)..\..\lib\$(Configuration)\;$(SolutionDir)..\..\util\deps\libuv\Release\lib\;$(LibraryPath)</LibraryPath>
|
||||||
|
<OutDir>$(SolutionDir)..\..\bin\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)..\..\build\cli\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\src\cli;..\..\..\src\module;..\..\..\include;..\..\..\util\deps\libuv\include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>wren_static_d.lib;libuv.lib;ws2_32.lib;psapi.lib;iphlpapi.lib;userenv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\src\cli;..\..\..\src\module;..\..\..\include;..\..\..\util\deps\libuv\include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<AdditionalDependencies>wren_static.lib;libuv.lib;ws2_32.lib;psapi.lib;iphlpapi.lib;userenv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\src\cli\main.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\cli\modules.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\cli\vm.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\module\io.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\module\scheduler.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\module\timer.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\src\include\wren.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\cli\modules.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\cli\vm.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\module\io.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\module\scheduler.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\wren_lib\wren_lib.vcxproj">
|
||||||
|
<Project>{89cf2c43-749e-4ec4-a7c3-3f22fba9b874}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
54
util/msvc2013/wren/wren.vcxproj.filters
Normal file
54
util/msvc2013/wren/wren.vcxproj.filters
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\src\cli\main.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\cli\modules.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\cli\vm.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\module\io.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\module\scheduler.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\module\timer.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\src\include\wren.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\cli\modules.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\cli\vm.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\module\io.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\module\scheduler.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@ -39,14 +39,16 @@
|
|||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)..\..\src\include;</IncludePath>
|
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)..\..\src\include;$(SolutionDir)..\..\src\vm;$(SolutionDir)..\..\src\optional</IncludePath>
|
||||||
<TargetName>wren_static_d</TargetName>
|
<TargetName>wren_static_d</TargetName>
|
||||||
<OutDir>$(SolutionDir)..\..\build\vs\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\..\lib\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)..\..\build\lib\$(Configuration)\</IntDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)..\..\src\include</IncludePath>
|
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)..\..\src\include;$(SolutionDir)..\..\src\vm;$(SolutionDir)..\..\src\optional</IncludePath>
|
||||||
<TargetName>wren_static</TargetName>
|
<TargetName>wren_static</TargetName>
|
||||||
<OutDir>$(SolutionDir)..\..\build\vs\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\..\lib\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)..\..\build\lib\$(Configuration)\</IntDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -79,24 +81,26 @@
|
|||||||
<ClCompile Include="..\..\..\src\vm\wren_compiler.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_compiler.c" />
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_core.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_core.c" />
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_debug.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_debug.c" />
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_io.c" />
|
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_meta.c" />
|
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_primitive.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_primitive.c" />
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_utils.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_utils.c" />
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_value.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_value.c" />
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_vm.c" />
|
<ClCompile Include="..\..\..\src\vm\wren_vm.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\optional\wren_opt_meta.c" />
|
||||||
|
<ClCompile Include="..\..\..\src\optional\wren_opt_random.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\src\include\wren.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_common.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_common.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_compiler.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_compiler.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_core.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_core.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_debug.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_debug.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_io.h" />
|
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_meta.h" />
|
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_primitive.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_primitive.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_utils.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_utils.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_value.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_value.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\vm\wren_opcodes.h" />
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_vm.h" />
|
<ClInclude Include="..\..\..\src\vm\wren_vm.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\optional\wren_opt_meta.h" />
|
||||||
|
<ClInclude Include="..\..\..\src\optional\wren_opt_random.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|||||||
@ -24,9 +24,6 @@
|
|||||||
<ClCompile Include="..\..\..\src\vm\wren_debug.c">
|
<ClCompile Include="..\..\..\src\vm\wren_debug.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_io.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_utils.c">
|
<ClCompile Include="..\..\..\src\vm\wren_utils.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@ -36,14 +33,20 @@
|
|||||||
<ClCompile Include="..\..\..\src\vm\wren_vm.c">
|
<ClCompile Include="..\..\..\src\vm\wren_vm.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_meta.c">
|
<ClCompile Include="..\..\..\src\vm\wren_primitive.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\src\vm\wren_primitive.c">
|
<ClCompile Include="..\..\..\src\optional\wren_opt_meta.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\src\optional\wren_opt_random.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\src\include\wren.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_common.h">
|
<ClInclude Include="..\..\..\src\vm\wren_common.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@ -56,23 +59,26 @@
|
|||||||
<ClInclude Include="..\..\..\src\vm\wren_debug.h">
|
<ClInclude Include="..\..\..\src\vm\wren_debug.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_io.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_utils.h">
|
<ClInclude Include="..\..\..\src\vm\wren_utils.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_value.h">
|
<ClInclude Include="..\..\..\src\vm\wren_value.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_vm.h">
|
<ClInclude Include="..\..\..\src\vm\wren_opcodes.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_meta.h">
|
<ClInclude Include="..\..\..\src\vm\wren_vm.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\src\vm\wren_primitive.h">
|
<ClInclude Include="..\..\..\src\vm\wren_primitive.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\optional\wren_opt_meta.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\src\optional\wren_opt_random.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
82
util/pygments-lexer/wren/__init__.py
Normal file
82
util/pygments-lexer/wren/__init__.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import re
|
||||||
|
from pygments import highlight
|
||||||
|
from pygments.lexers import PythonLexer
|
||||||
|
from pygments.formatters import HtmlFormatter
|
||||||
|
|
||||||
|
from pygments.lexer import RegexLexer
|
||||||
|
from pygments.token import *
|
||||||
|
|
||||||
|
class WrenLexer(RegexLexer):
|
||||||
|
name = 'Wren'
|
||||||
|
aliases = ['wren']
|
||||||
|
filenames = ['*.wren']
|
||||||
|
|
||||||
|
flags = re.MULTILINE | re.DOTALL
|
||||||
|
|
||||||
|
tokens = {
|
||||||
|
'root': [
|
||||||
|
# Whitespace.
|
||||||
|
(r'\s+', Text),
|
||||||
|
(r'[,\\\[\]{}]', Punctuation),
|
||||||
|
|
||||||
|
# Push a parenthesized state so that we know the corresponding ')'
|
||||||
|
# is for a parenthesized expression and not interpolation.
|
||||||
|
(r'\(', Punctuation, ('parenthesized', 'root')),
|
||||||
|
|
||||||
|
# In this state, we don't know whether a closing ')' is for a
|
||||||
|
# parenthesized expression or the end of an interpolation. So, do
|
||||||
|
# a non-consuming match and let the parent state (either
|
||||||
|
# 'parenthesized' or 'interpolation' decide.
|
||||||
|
(r'(?=\))', Text, '#pop'),
|
||||||
|
|
||||||
|
# Keywords.
|
||||||
|
(r'(break|class|construct|else|for|foreign|if|import|in|is|'
|
||||||
|
r'return|static|super|var|while)\b', Keyword),
|
||||||
|
|
||||||
|
(r'(true|false|null)\b', Keyword.Constant),
|
||||||
|
|
||||||
|
(r'this\b', Name.Builtin),
|
||||||
|
|
||||||
|
# Comments.
|
||||||
|
(r'/\*', Comment.Multiline, 'comment'),
|
||||||
|
(r'//.*?$', Comment.Single),
|
||||||
|
|
||||||
|
# Names and operators.
|
||||||
|
(r'[~!$%^&*\-=+\\|/?<>\.:]+', Operator),
|
||||||
|
(r'[A-Z][a-zA-Z_0-9]+', Name.Variable.Global),
|
||||||
|
(r'__[a-zA-Z_0-9]+', Name.Variable.Class),
|
||||||
|
(r'_[a-zA-Z_0-9]+', Name.Variable.Instance),
|
||||||
|
(r'[a-z][a-zA-Z_0-9]+', Name),
|
||||||
|
|
||||||
|
# Numbers.
|
||||||
|
(r'\d+\.\d+([eE]-?\d+)?', Number.Float),
|
||||||
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
||||||
|
(r'\d+', Number.Integer),
|
||||||
|
|
||||||
|
# Strings.
|
||||||
|
(r'L?"', String, 'string'),
|
||||||
|
],
|
||||||
|
'comment': [
|
||||||
|
(r'/\*', Comment.Multiline, '#push'),
|
||||||
|
(r'\*/', Comment.Multiline, '#pop'),
|
||||||
|
(r'.', Comment.Multiline), # All other characters.
|
||||||
|
],
|
||||||
|
'string': [
|
||||||
|
(r'"', String, '#pop'),
|
||||||
|
(r'\\[\\%0abfnrtv"\']', String.Escape), # Escape.
|
||||||
|
(r'\\x[a-fA-F0-9]{2}', String.Escape), # Byte escape.
|
||||||
|
(r'\\u[a-fA-F0-9]{4}', String.Escape), # Unicode escape.
|
||||||
|
(r'\\U[a-fA-F0-9]{8}', String.Escape), # Long Unicode escape.
|
||||||
|
|
||||||
|
(r'%\(', String.Interpol, ('interpolation', 'root')),
|
||||||
|
(r'.', String), # All other characters.
|
||||||
|
],
|
||||||
|
'parenthesized': [
|
||||||
|
# We only get to this state when we're at a ')'.
|
||||||
|
(r'\)', Punctuation, '#pop'),
|
||||||
|
],
|
||||||
|
'interpolation': [
|
||||||
|
# We only get to this state when we're at a ')'.
|
||||||
|
(r'\)', String.Interpol, '#pop'),
|
||||||
|
],
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user