mirror of
https://github.com/ralsina/tartrazine.git
synced 2025-08-03 06:19:52 +00:00
implement IsGenerated helper to filter out generated files
Closes #17 Implements the IsGenerated helper function to filter out generated files using the rules and matchers in: - https://github.com/github/linguist/blob/master/lib/linguist/generated.rb Since the vast majority of matchers have very different logic, it cannot be autogenerated directly from linguist like other logics in enry, so it's translated by hand. There are three different types of matchers in this implementation: - By extension, which mark as generated based only in the extension. These are the fastest matchers, so they're done first. - By file name, which matches patterns against the filename. These are performed in second place. Unlike linguist, we try to use string functions instead of regexps as much as possible. - Finally, the rest of the matchers, which go into the content and try to identify if they're generated or not based on the content. Unlike linguist, we try to only read the content we need and not split it all unless it's necessary and use byte functions instead of regexps as much as possible. Signed-off-by: Miguel Molina <miguel@erizocosmi.co>
This commit is contained in:
42
_testdata/C/image.c
Normal file
42
_testdata/C/image.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/* GIMP RGB C-Source image dump (image.c) */
|
||||
|
||||
static const struct {
|
||||
guint width;
|
||||
guint height;
|
||||
guint bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */
|
||||
guint8 pixel_data[16 * 16 * 3 + 1];
|
||||
} gimp_image = {
|
||||
16, 16, 3,
|
||||
"\377\063\000\377T\001\377\207\001\377\272\000\377\354\000\341\377\001\256\377\000{\377\001"
|
||||
"Z\377\000(\377\000\000\377\014\001\377>\000\377q\001\377\243\000\377\325\001\377\367\377T"
|
||||
"\001\377\207\001\377\271\000\377\354\000\341\377\001\256\377\001{\377\001Z\377\001(\377\001"
|
||||
"\000\377\014\001\377>\001\377q\001\377\243\000\377\325\001\377\367\001\325\377\377\207\000"
|
||||
"\377\272\001\377\354\000\341\377\001\257\377\001|\377\000[\377\001(\377\000\001\377\013\001"
|
||||
"\377>\000\377q\000\377\244\000\377\325\000\377\367\000\325\377\001\243\377\377\272\001"
|
||||
"\377\354\001\340\377\001\256\377\000|\377\001Z\377\000(\377\000\001\377\014\001\377>\000\377"
|
||||
"q\000\377\243\001\377\326\000\377\370\001\325\377\001\243\377\000q\377\377\354\000\341"
|
||||
"\377\001\257\377\000|\377\000Z\377\001(\377\000\000\377\013\000\377?\001\377q\001\377\243\000"
|
||||
"\377\325\001\377\370\000\326\377\000\243\377\001q\377\000>\377\340\377\001\257\377\001"
|
||||
"{\377\001Z\377\000(\377\001\000\377\014\001\377>\001\377q\000\377\243\000\377\325\000\377\367"
|
||||
"\001\325\377\000\243\377\000p\377\001?\377\000\014\377\256\377\000|\377\000Z\377\001'\377"
|
||||
"\001\001\377\014\001\377>\000\377p\001\377\243\001\377\326\001\377\367\000\326\377\000\243\377"
|
||||
"\000q\377\000>\377\000\014\377(\000\377|\377\001J\377\001(\377\001\001\377\013\000\377>\001\377"
|
||||
"q\000\377\243\000\377\325\000\377\367\001\326\377\000\243\377\000p\377\000>\377\001\014\377"
|
||||
"'\000\377J\001\377I\377\001'\377\000\001\377\013\001\377>\001\377p\000\377\243\000\377\326\001"
|
||||
"\367\377\000\326\377\000\243\377\000q\377\001>\377\001\014\377(\001\377I\001\377|\001\377"
|
||||
"'\377\001\000\377\014\000\377>\001\377p\000\377\243\000\377\326\000\367\377\000\325\377\000"
|
||||
"\243\377\001p\377\001?\377\001\014\377(\000\377Z\000\377|\000\377\256\000\377\001\377\013\000"
|
||||
"\377>\001\377p\000\377\243\001\377\325\001\367\377\001\326\377\000\243\377\000p\377\001?"
|
||||
"\377\001\013\377(\000\377Z\000\377|\000\377\256\000\377\341\001\377\000\377?\001\377p\001\377"
|
||||
"\243\001\377\326\000\367\377\001\326\377\001\243\377\001q\377\001>\377\000\014\377(\000\377"
|
||||
"Z\001\377|\000\377\256\001\377\341\000\377\377\000\354\000\377p\000\377\243\001\377\326\001"
|
||||
"\367\377\001\326\377\000\243\377\001q\377\000>\377\001\013\377(\001\377Z\000\377|\001\377"
|
||||
"\257\000\377\341\000\377\377\000\354\377\001\271\000\377\243\000\377\326\001\367\377\001"
|
||||
"\326\377\001\243\377\000q\377\000>\377\000\014\377'\001\377Z\000\377{\001\377\256\000\377"
|
||||
"\341\001\377\377\001\354\377\001\271\377\000\207\000\377\325\001\367\377\000\326\377\000"
|
||||
"\243\377\001q\377\001>\377\001\014\377(\000\377Z\001\377|\000\377\256\000\377\340\000\377"
|
||||
"\377\000\354\377\001\271\377\000\207\377\000T\000\367\377\001\325\377\000\243\377\000p\377"
|
||||
"\001>\377\001\014\377(\001\377Z\000\377|\001\377\256\000\377\341\001\377\377\000\354\377\000"
|
||||
"\271\377\000\207\377\000T\377\001\063",
|
||||
};
|
||||
|
31
_testdata/C/image.h
Normal file
31
_testdata/C/image.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/* GIMP header image file format (RGB): image.h */
|
||||
|
||||
static unsigned int width = 16;
|
||||
static unsigned int height = 16;
|
||||
|
||||
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
|
||||
|
||||
#define HEADER_PIXEL(data,pixel) {\
|
||||
pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
|
||||
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
|
||||
pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
|
||||
data += 4; \
|
||||
}
|
||||
static char *header_data =
|
||||
"`T-!`V1\"`Y=\"`\\I!`_Q!Y@]\"LP]!?`]\"7P]!+0]!!0]-!@]_!0^R!@_D!0`6!@`X"
|
||||
"`V1\"`Y=\"`\\E!`_Q!Y@]\"LP]\"?`]\"7P]\"+0]\"!0]-!@]_!@^R!@_D!0`6!@`X!>8`"
|
||||
"`Y=!`\\I\"`_Q!Y@]\"L`]\"@0]!7`]\"+0]!!@],!@]_!0^R!0_E!0`6!0`X!.8`!;0`"
|
||||
"`\\I\"`_Q\"Y0]\"LP]!@0]\"7P]!+0]!!@]-!@]_!0^R!0_D!@`7!0`Y!>8`!;0`!((`"
|
||||
"`_Q!Y@]\"L`]!@0]!7P]\"+0]!!0],!0]`!@^R!@_D!0`6!@`Y!.<`!+0`!8(`!$\\`"
|
||||
"Y0]\"L`]\"?`]\"7P]!+0]\"!0]-!@]_!@^R!0_D!0`6!0`X!>8`!+0`!($`!4``!!T`"
|
||||
"LP]!@0]!7P]\"*`]\"!@]-!@]_!0^Q!@_D!@`7!@`X!.<`!+0`!((`!$\\`!!T`+!$`"
|
||||
"@0]\"3P]\"+0]\"!@],!0]_!@^R!0_D!0`6!0`X!><`!+0`!($`!$\\`!1T`*Q$`3A(`"
|
||||
"3@]\"*`]!!@],!@]_!@^Q!0_D!0`7!@@`!.<`!+0`!((`!4\\`!1T`+!(`31(`@!(`"
|
||||
"*`]\"!0]-!0]_!@^Q!0_D!0`7!0@`!.8`!+0`!8$`!4``!1T`+!$`7A$`@!$`LA$`"
|
||||
"!@],!0]_!@^Q!0_D!@`6!@@`!><`!+0`!($`!4``!1P`+!$`7A$`@!$`LA$`Y1(`"
|
||||
"!0]`!@^Q!@_D!@`7!0@`!><`!;0`!8(`!4\\`!!T`+!$`7A(`@!$`LA(`Y1$``Q$M"
|
||||
"!0^Q!0_D!@`7!@@`!><`!+0`!8(`!$\\`!1P`+!(`7A$`@!(`LQ$`Y1$``Q$M`Q'Z"
|
||||
"!0_D!0`7!@@`!><`!;0`!((`!$\\`!!T`*Q(`7A$`?Q(`LA$`Y1(``Q(M`Q'Z`Q#("
|
||||
"!0`6!@@`!.<`!+0`!8(`!4\\`!1T`+!$`7A(`@!$`LA$`Y!$``Q$M`Q'Z`Q#(`Q\"5"
|
||||
"!0@`!>8`!+0`!($`!4\\`!1T`+!(`7A$`@!(`LA$`Y1(``Q$M`Q#Z`Q#(`Q\"5`Q%T"
|
||||
"";
|
1
_testdata/Data/bootstrap.css.map
Normal file
1
_testdata/Data/bootstrap.css.map
Normal file
File diff suppressed because one or more lines are too long
12
_testdata/Data/sourcemap.v1.map
Normal file
12
_testdata/Data/sourcemap.v1.map
Normal file
@@ -0,0 +1,12 @@
|
||||
/** Begin line maps. **/{ “file”:”out.js”, "count": 2 }
|
||||
[0,0,0,0,0,0,1,1,1,1,2]
|
||||
[2,2,2,2,2,2,3,4,4,4,4,4]
|
||||
/** Begin file information. **/
|
||||
[“a.js”, “b.js”]
|
||||
[“b.js”, “c.js”, “d.js”]
|
||||
/** Begin mapping definitions. **/
|
||||
["a.js", 1, 34]
|
||||
["a.js", 5, 2]
|
||||
["b.js", 1, 3, "event"]
|
||||
["c.js", 1, 4]
|
||||
["d.js", 3, 78, "foo"]
|
1
_testdata/Data/sourcemap.v3.map
Normal file
1
_testdata/Data/sourcemap.v3.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"out.js","sourceRoot":"","sources":["foo.js","bar.js"],"sourcesContent":[null,null],"names":["src","maps","are","fun"],"mappings":"A,AAAB;;ABCDE;"}
|
86
_testdata/Generated/Haxe/Main.cpp
Normal file
86
_testdata/Generated/Haxe/Main.cpp
Normal file
@@ -0,0 +1,86 @@
|
||||
// Generated by Haxe 4.0.5
|
||||
#include <hxcpp.h>
|
||||
|
||||
#ifndef INCLUDED_Main
|
||||
#include <Main.h>
|
||||
#endif
|
||||
#ifndef INCLUDED_haxe_Log
|
||||
#include <haxe/Log.h>
|
||||
#endif
|
||||
|
||||
HX_LOCAL_STACK_FRAME(_hx_pos_e47a9afac0942eb9_3_main,"Main","main",0xed0e206e,"Main.main","Main.hx",3,0x087e5c05)
|
||||
|
||||
void Main_obj::__construct() { }
|
||||
|
||||
Dynamic Main_obj::__CreateEmpty() { return new Main_obj; }
|
||||
|
||||
void *Main_obj::_hx_vtable = 0;
|
||||
|
||||
Dynamic Main_obj::__Create(hx::DynamicArray inArgs)
|
||||
{
|
||||
hx::ObjectPtr< Main_obj > _hx_result = new Main_obj();
|
||||
_hx_result->__construct();
|
||||
return _hx_result;
|
||||
}
|
||||
|
||||
bool Main_obj::_hx_isInstanceOf(int inClassId) {
|
||||
return inClassId==(int)0x00000001 || inClassId==(int)0x332f6459;
|
||||
}
|
||||
|
||||
void Main_obj::main(){
|
||||
HX_STACKFRAME(&_hx_pos_e47a9afac0942eb9_3_main)
|
||||
HXDLIN( 3) ::haxe::Log_obj::trace(HX_("Hello World",84,f6,db,6f),hx::SourceInfo(HX_("source/Main.hx",91,d3,a7,40),3,HX_("Main",59,64,2f,33),HX_("main",39,38,56,48)));
|
||||
}
|
||||
|
||||
|
||||
STATIC_HX_DEFINE_DYNAMIC_FUNC0(Main_obj,main,(void))
|
||||
|
||||
|
||||
Main_obj::Main_obj()
|
||||
{
|
||||
}
|
||||
|
||||
bool Main_obj::__GetStatic(const ::String &inName, Dynamic &outValue, hx::PropertyAccess inCallProp)
|
||||
{
|
||||
switch(inName.length) {
|
||||
case 4:
|
||||
if (HX_FIELD_EQ(inName,"main") ) { outValue = main_dyn(); return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef HXCPP_SCRIPTABLE
|
||||
static hx::StorageInfo *Main_obj_sMemberStorageInfo = 0;
|
||||
static hx::StaticInfo *Main_obj_sStaticStorageInfo = 0;
|
||||
#endif
|
||||
|
||||
hx::Class Main_obj::__mClass;
|
||||
|
||||
static ::String Main_obj_sStaticFields[] = {
|
||||
HX_("main",39,38,56,48),
|
||||
::String(null())
|
||||
};
|
||||
|
||||
void Main_obj::__register()
|
||||
{
|
||||
Main_obj _hx_dummy;
|
||||
Main_obj::_hx_vtable = *(void **)&_hx_dummy;
|
||||
hx::Static(__mClass) = new hx::Class_obj();
|
||||
__mClass->mName = HX_("Main",59,64,2f,33);
|
||||
__mClass->mSuper = &super::__SGetClass();
|
||||
__mClass->mConstructEmpty = &__CreateEmpty;
|
||||
__mClass->mConstructArgs = &__Create;
|
||||
__mClass->mGetStaticField = &Main_obj::__GetStatic;
|
||||
__mClass->mSetStaticField = &hx::Class_obj::SetNoStaticField;
|
||||
__mClass->mStatics = hx::Class_obj::dupFunctions(Main_obj_sStaticFields);
|
||||
__mClass->mMembers = hx::Class_obj::dupFunctions(0 /* sMemberFields */);
|
||||
__mClass->mCanCast = hx::TCanCast< Main_obj >;
|
||||
#ifdef HXCPP_SCRIPTABLE
|
||||
__mClass->mMemberStorageInfo = Main_obj_sMemberStorageInfo;
|
||||
#endif
|
||||
#ifdef HXCPP_SCRIPTABLE
|
||||
__mClass->mStaticStorageInfo = Main_obj_sStaticStorageInfo;
|
||||
#endif
|
||||
hx::_hx_RegisterClass(__mClass->mName, __mClass);
|
||||
}
|
||||
|
37
_testdata/Generated/Haxe/Main.cs
Normal file
37
_testdata/Generated/Haxe/Main.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
// Generated by Haxe 4.0.5
|
||||
|
||||
#pragma warning disable 109, 114, 219, 429, 168, 162
|
||||
public class EntryPoint__Main {
|
||||
public static void Main() {
|
||||
global::cs.Boot.init();
|
||||
{
|
||||
global::Main.main();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Main : global::haxe.lang.HxObject {
|
||||
|
||||
public Main(global::haxe.lang.EmptyObject empty) {
|
||||
}
|
||||
|
||||
|
||||
public Main() {
|
||||
global::Main.__hx_ctor__Main(this);
|
||||
}
|
||||
|
||||
|
||||
protected static void __hx_ctor__Main(global::Main __hx_this) {
|
||||
}
|
||||
|
||||
|
||||
public static void main() {
|
||||
unchecked {
|
||||
global::haxe.Log.trace.__hx_invoke2_o(default(double), "Hello World", default(double), new global::haxe.lang.DynamicObject(new int[]{302979532, 1547539107, 1648581351}, new object[]{"main", "Main", "source/Main.hx"}, new int[]{1981972957}, new double[]{((double) (3) )}));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
58
_testdata/Generated/Haxe/Main.h
Normal file
58
_testdata/Generated/Haxe/Main.h
Normal file
@@ -0,0 +1,58 @@
|
||||
// Generated by Haxe 4.0.5
|
||||
#ifndef INCLUDED_Main
|
||||
#define INCLUDED_Main
|
||||
|
||||
#ifndef HXCPP_H
|
||||
#include <hxcpp.h>
|
||||
#endif
|
||||
|
||||
HX_DECLARE_CLASS0(Main)
|
||||
|
||||
|
||||
|
||||
class HXCPP_CLASS_ATTRIBUTES Main_obj : public hx::Object
|
||||
{
|
||||
public:
|
||||
typedef hx::Object super;
|
||||
typedef Main_obj OBJ_;
|
||||
Main_obj();
|
||||
|
||||
public:
|
||||
enum { _hx_ClassId = 0x332f6459 };
|
||||
|
||||
void __construct();
|
||||
inline void *operator new(size_t inSize, bool inContainer=false,const char *inName="Main")
|
||||
{ return hx::Object::operator new(inSize,inContainer,inName); }
|
||||
inline void *operator new(size_t inSize, int extra)
|
||||
{ return hx::Object::operator new(inSize+extra,false,"Main"); }
|
||||
|
||||
inline static hx::ObjectPtr< Main_obj > __new() {
|
||||
hx::ObjectPtr< Main_obj > __this = new Main_obj();
|
||||
__this->__construct();
|
||||
return __this;
|
||||
}
|
||||
|
||||
inline static hx::ObjectPtr< Main_obj > __alloc(hx::Ctx *_hx_ctx) {
|
||||
Main_obj *__this = (Main_obj*)(hx::Ctx::alloc(_hx_ctx, sizeof(Main_obj), false, "Main"));
|
||||
*(void **)__this = Main_obj::_hx_vtable;
|
||||
return __this;
|
||||
}
|
||||
|
||||
static void * _hx_vtable;
|
||||
static Dynamic __CreateEmpty();
|
||||
static Dynamic __Create(hx::DynamicArray inArgs);
|
||||
//~Main_obj();
|
||||
|
||||
HX_DO_RTTI_ALL;
|
||||
static bool __GetStatic(const ::String &inString, Dynamic &outValue, hx::PropertyAccess inCallProp);
|
||||
static void __register();
|
||||
bool _hx_isInstanceOf(int inClassId);
|
||||
::String __ToString() const { return HX_("Main",59,64,2f,33); }
|
||||
|
||||
static void main();
|
||||
static ::Dynamic main_dyn();
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif /* INCLUDED_Main */
|
41
_testdata/Generated/Haxe/Main.java
Normal file
41
_testdata/Generated/Haxe/Main.java
Normal file
@@ -0,0 +1,41 @@
|
||||
// Generated by Haxe 4.0.5
|
||||
package haxe.root;
|
||||
|
||||
import haxe.root.*;
|
||||
|
||||
@SuppressWarnings(value={"rawtypes", "unchecked"})
|
||||
public class Main extends haxe.lang.HxObject
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
haxe.java.Init.init();
|
||||
{
|
||||
haxe.root.Main.main();
|
||||
}
|
||||
}
|
||||
|
||||
public Main(haxe.lang.EmptyObject empty)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public Main()
|
||||
{
|
||||
haxe.root.Main.__hx_ctor__Main(this);
|
||||
}
|
||||
|
||||
|
||||
protected static void __hx_ctor__Main(haxe.root.Main __hx_this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public static void main()
|
||||
{
|
||||
haxe.Log.trace.__hx_invoke2_o(0.0, "Hello World", 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{"className", "fileName", "methodName"}, new java.lang.Object[]{"Main", "source/Main.hx", "main"}, new java.lang.String[]{"lineNumber"}, new double[]{((double) (((double) (3) )) )}));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
31
_testdata/Generated/Haxe/Main.php
Normal file
31
_testdata/Generated/Haxe/Main.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* Generated by Haxe 4.0.5
|
||||
*/
|
||||
|
||||
use \php\_Boot\HxAnon;
|
||||
use \php\Boot;
|
||||
use \haxe\Log;
|
||||
|
||||
class Main {
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public static function main () {
|
||||
#source/Main.hx:3: characters 3-8
|
||||
(Log::$trace)("Hello World", new HxAnon([
|
||||
"fileName" => "source/Main.hx",
|
||||
"lineNumber" => 3,
|
||||
"className" => "Main",
|
||||
"methodName" => "main",
|
||||
]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function __construct () {
|
||||
}
|
||||
}
|
||||
|
||||
Boot::registerClass(Main::class, 'Main');
|
8
_testdata/Generated/Haxe/main.js
Normal file
8
_testdata/Generated/Haxe/main.js
Normal file
@@ -0,0 +1,8 @@
|
||||
// Generated by Haxe 4.0.5
|
||||
(function ($global) { "use strict";
|
||||
var Main = function() { };
|
||||
Main.main = function() {
|
||||
console.log("source/Main.hx:3:","Hello World");
|
||||
};
|
||||
Main.main();
|
||||
})({});
|
816
_testdata/Generated/Haxe/main.lua
Normal file
816
_testdata/Generated/Haxe/main.lua
Normal file
@@ -0,0 +1,816 @@
|
||||
-- Generated by Haxe 4.0.5
|
||||
local _hx_array_mt = {
|
||||
__newindex = function(t,k,v)
|
||||
local len = t.length
|
||||
t.length = k >= len and (k + 1) or len
|
||||
rawset(t,k,v)
|
||||
end
|
||||
}
|
||||
|
||||
local function _hx_tab_array(tab,length)
|
||||
tab.length = length
|
||||
return setmetatable(tab, _hx_array_mt)
|
||||
end
|
||||
|
||||
local function _hx_anon_newindex(t,k,v) t.__fields__[k] = true; rawset(t,k,v); end
|
||||
local _hx_anon_mt = {__newindex=_hx_anon_newindex}
|
||||
local function _hx_a(...)
|
||||
local __fields__ = {};
|
||||
local ret = {__fields__ = __fields__};
|
||||
local max = select('#',...);
|
||||
local tab = {...};
|
||||
local cur = 1;
|
||||
while cur < max do
|
||||
local v = tab[cur];
|
||||
__fields__[v] = true;
|
||||
ret[v] = tab[cur+1];
|
||||
cur = cur + 2
|
||||
end
|
||||
return setmetatable(ret, _hx_anon_mt)
|
||||
end
|
||||
|
||||
local function _hx_e()
|
||||
return setmetatable({__fields__ = {}}, _hx_anon_mt)
|
||||
end
|
||||
|
||||
local function _hx_o(obj)
|
||||
return setmetatable(obj, _hx_anon_mt)
|
||||
end
|
||||
|
||||
local function _hx_new(prototype)
|
||||
return setmetatable({__fields__ = {}}, {__newindex=_hx_anon_newindex, __index=prototype})
|
||||
end
|
||||
|
||||
local _hxClasses = {}
|
||||
local Int = _hx_e();
|
||||
local Dynamic = _hx_e();
|
||||
local Float = _hx_e();
|
||||
local Bool = _hx_e();
|
||||
local Class = _hx_e();
|
||||
local Enum = _hx_e();
|
||||
|
||||
local Array = _hx_e()
|
||||
__lua_lib_luautf8_Utf8 = _G.require("lua-utf8")
|
||||
local Main = _hx_e()
|
||||
local Math = _hx_e()
|
||||
local String = _hx_e()
|
||||
local Std = _hx_e()
|
||||
__haxe_Log = _hx_e()
|
||||
__lua_Boot = _hx_e()
|
||||
|
||||
local _hx_bind, _hx_bit, _hx_staticToInstance, _hx_funcToField, _hx_maxn, _hx_print, _hx_apply_self, _hx_box_mr, _hx_bit_clamp, _hx_table, _hx_bit_raw
|
||||
local _hx_pcall_default = {};
|
||||
local _hx_pcall_break = {};
|
||||
|
||||
Array.new = function()
|
||||
local self = _hx_new(Array.prototype)
|
||||
Array.super(self)
|
||||
return self
|
||||
end
|
||||
Array.super = function(self)
|
||||
_hx_tab_array(self, 0);
|
||||
end
|
||||
Array.prototype = _hx_a();
|
||||
Array.prototype.concat = function(self,a)
|
||||
local _g = _hx_tab_array({}, 0);
|
||||
local _g1 = 0;
|
||||
local _g2 = self;
|
||||
while (_g1 < _g2.length) do
|
||||
local i = _g2[_g1];
|
||||
_g1 = _g1 + 1;
|
||||
_g:push(i);
|
||||
end;
|
||||
local ret = _g;
|
||||
local _g3 = 0;
|
||||
while (_g3 < a.length) do
|
||||
local i1 = a[_g3];
|
||||
_g3 = _g3 + 1;
|
||||
ret:push(i1);
|
||||
end;
|
||||
do return ret end
|
||||
end
|
||||
Array.prototype.join = function(self,sep)
|
||||
local tbl = ({});
|
||||
local _gthis = self;
|
||||
local cur_length = 0;
|
||||
local i = _hx_o({__fields__={hasNext=true,next=true},hasNext=function(self)
|
||||
do return cur_length < _gthis.length end;
|
||||
end,next=function(self)
|
||||
cur_length = cur_length + 1;
|
||||
do return _gthis[cur_length - 1] end;
|
||||
end});
|
||||
while (i:hasNext()) do
|
||||
local i1 = i:next();
|
||||
_G.table.insert(tbl, Std.string(i1));
|
||||
end;
|
||||
do return _G.table.concat(tbl, sep) end
|
||||
end
|
||||
Array.prototype.pop = function(self)
|
||||
if (self.length == 0) then
|
||||
do return nil end;
|
||||
end;
|
||||
local ret = self[self.length - 1];
|
||||
self[self.length - 1] = nil;
|
||||
self.length = self.length - 1;
|
||||
do return ret end
|
||||
end
|
||||
Array.prototype.push = function(self,x)
|
||||
self[self.length] = x;
|
||||
do return self.length end
|
||||
end
|
||||
Array.prototype.reverse = function(self)
|
||||
local tmp;
|
||||
local i = 0;
|
||||
while (i < Std.int(self.length / 2)) do
|
||||
tmp = self[i];
|
||||
self[i] = self[(self.length - i) - 1];
|
||||
self[(self.length - i) - 1] = tmp;
|
||||
i = i + 1;
|
||||
end;
|
||||
end
|
||||
Array.prototype.shift = function(self)
|
||||
if (self.length == 0) then
|
||||
do return nil end;
|
||||
end;
|
||||
local ret = self[0];
|
||||
if (self.length == 1) then
|
||||
self[0] = nil;
|
||||
else
|
||||
if (self.length > 1) then
|
||||
self[0] = self[1];
|
||||
_G.table.remove(self, 1);
|
||||
end;
|
||||
end;
|
||||
local tmp = self;
|
||||
tmp.length = tmp.length - 1;
|
||||
do return ret end
|
||||
end
|
||||
Array.prototype.slice = function(self,pos,_end)
|
||||
if ((_end == nil) or (_end > self.length)) then
|
||||
_end = self.length;
|
||||
else
|
||||
if (_end < 0) then
|
||||
_end = _G.math.fmod((self.length - (_G.math.fmod(-_end, self.length))), self.length);
|
||||
end;
|
||||
end;
|
||||
if (pos < 0) then
|
||||
pos = _G.math.fmod((self.length - (_G.math.fmod(-pos, self.length))), self.length);
|
||||
end;
|
||||
if ((pos > _end) or (pos > self.length)) then
|
||||
do return _hx_tab_array({}, 0) end;
|
||||
end;
|
||||
local ret = _hx_tab_array({}, 0);
|
||||
local _g = pos;
|
||||
local _g1 = _end;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
ret:push(self[i]);
|
||||
end;
|
||||
do return ret end
|
||||
end
|
||||
Array.prototype.sort = function(self,f)
|
||||
local i = 0;
|
||||
local l = self.length;
|
||||
while (i < l) do
|
||||
local swap = false;
|
||||
local j = 0;
|
||||
local max = (l - i) - 1;
|
||||
while (j < max) do
|
||||
if (f(self[j], self[j + 1]) > 0) then
|
||||
local tmp = self[j + 1];
|
||||
self[j + 1] = self[j];
|
||||
self[j] = tmp;
|
||||
swap = true;
|
||||
end;
|
||||
j = j + 1;
|
||||
end;
|
||||
if (not swap) then
|
||||
break;
|
||||
end;
|
||||
i = i + 1;
|
||||
end;
|
||||
end
|
||||
Array.prototype.splice = function(self,pos,len)
|
||||
if ((len < 0) or (pos > self.length)) then
|
||||
do return _hx_tab_array({}, 0) end;
|
||||
else
|
||||
if (pos < 0) then
|
||||
pos = self.length - (_G.math.fmod(-pos, self.length));
|
||||
end;
|
||||
end;
|
||||
len = Math.min(len, self.length - pos);
|
||||
local ret = _hx_tab_array({}, 0);
|
||||
local _g = pos;
|
||||
local _g1 = pos + len;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
ret:push(self[i]);
|
||||
self[i] = self[i + len];
|
||||
end;
|
||||
local _g2 = pos + len;
|
||||
local _g3 = self.length;
|
||||
while (_g2 < _g3) do
|
||||
_g2 = _g2 + 1;
|
||||
local i1 = _g2 - 1;
|
||||
self[i1] = self[i1 + len];
|
||||
end;
|
||||
local tmp = self;
|
||||
tmp.length = tmp.length - len;
|
||||
do return ret end
|
||||
end
|
||||
Array.prototype.toString = function(self)
|
||||
local tbl = ({});
|
||||
_G.table.insert(tbl, "[");
|
||||
_G.table.insert(tbl, self:join(","));
|
||||
_G.table.insert(tbl, "]");
|
||||
do return _G.table.concat(tbl, "") end
|
||||
end
|
||||
Array.prototype.unshift = function(self,x)
|
||||
local len = self.length;
|
||||
local _g = 0;
|
||||
local _g1 = len;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
self[len - i] = self[(len - i) - 1];
|
||||
end;
|
||||
self[0] = x;
|
||||
end
|
||||
Array.prototype.insert = function(self,pos,x)
|
||||
if (pos > self.length) then
|
||||
pos = self.length;
|
||||
end;
|
||||
if (pos < 0) then
|
||||
pos = self.length + pos;
|
||||
if (pos < 0) then
|
||||
pos = 0;
|
||||
end;
|
||||
end;
|
||||
local cur_len = self.length;
|
||||
while (cur_len > pos) do
|
||||
self[cur_len] = self[cur_len - 1];
|
||||
cur_len = cur_len - 1;
|
||||
end;
|
||||
self[pos] = x;
|
||||
end
|
||||
Array.prototype.remove = function(self,x)
|
||||
local _g = 0;
|
||||
local _g1 = self.length;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
if (self[i] == x) then
|
||||
local _g2 = i;
|
||||
local _g11 = self.length - 1;
|
||||
while (_g2 < _g11) do
|
||||
_g2 = _g2 + 1;
|
||||
local j = _g2 - 1;
|
||||
self[j] = self[j + 1];
|
||||
end;
|
||||
self[self.length - 1] = nil;
|
||||
self.length = self.length - 1;
|
||||
do return true end;
|
||||
end;
|
||||
end;
|
||||
do return false end
|
||||
end
|
||||
Array.prototype.indexOf = function(self,x,fromIndex)
|
||||
local _end = self.length;
|
||||
if (fromIndex == nil) then
|
||||
fromIndex = 0;
|
||||
else
|
||||
if (fromIndex < 0) then
|
||||
fromIndex = self.length + fromIndex;
|
||||
if (fromIndex < 0) then
|
||||
fromIndex = 0;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
local _g = fromIndex;
|
||||
local _g1 = _end;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
if (x == self[i]) then
|
||||
do return i end;
|
||||
end;
|
||||
end;
|
||||
do return -1 end
|
||||
end
|
||||
Array.prototype.lastIndexOf = function(self,x,fromIndex)
|
||||
if ((fromIndex == nil) or (fromIndex >= self.length)) then
|
||||
fromIndex = self.length - 1;
|
||||
else
|
||||
if (fromIndex < 0) then
|
||||
fromIndex = self.length + fromIndex;
|
||||
if (fromIndex < 0) then
|
||||
do return -1 end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
local i = fromIndex;
|
||||
while (i >= 0) do
|
||||
if (self[i] == x) then
|
||||
do return i end;
|
||||
else
|
||||
i = i - 1;
|
||||
end;
|
||||
end;
|
||||
do return -1 end
|
||||
end
|
||||
Array.prototype.copy = function(self)
|
||||
local _g = _hx_tab_array({}, 0);
|
||||
local _g1 = 0;
|
||||
local _g2 = self;
|
||||
while (_g1 < _g2.length) do
|
||||
local i = _g2[_g1];
|
||||
_g1 = _g1 + 1;
|
||||
_g:push(i);
|
||||
end;
|
||||
do return _g end
|
||||
end
|
||||
Array.prototype.map = function(self,f)
|
||||
local _g = _hx_tab_array({}, 0);
|
||||
local _g1 = 0;
|
||||
local _g2 = self;
|
||||
while (_g1 < _g2.length) do
|
||||
local i = _g2[_g1];
|
||||
_g1 = _g1 + 1;
|
||||
_g:push(f(i));
|
||||
end;
|
||||
do return _g end
|
||||
end
|
||||
Array.prototype.filter = function(self,f)
|
||||
local _g = _hx_tab_array({}, 0);
|
||||
local _g1 = 0;
|
||||
local _g2 = self;
|
||||
while (_g1 < _g2.length) do
|
||||
local i = _g2[_g1];
|
||||
_g1 = _g1 + 1;
|
||||
if (f(i)) then
|
||||
_g:push(i);
|
||||
end;
|
||||
end;
|
||||
do return _g end
|
||||
end
|
||||
Array.prototype.iterator = function(self)
|
||||
local _gthis = self;
|
||||
local cur_length = 0;
|
||||
do return _hx_o({__fields__={hasNext=true,next=true},hasNext=function(self)
|
||||
do return cur_length < _gthis.length end;
|
||||
end,next=function(self)
|
||||
cur_length = cur_length + 1;
|
||||
do return _gthis[cur_length - 1] end;
|
||||
end}) end
|
||||
end
|
||||
Array.prototype.resize = function(self,len)
|
||||
if (self.length < len) then
|
||||
self.length = len;
|
||||
else
|
||||
if (self.length > len) then
|
||||
local _g = len;
|
||||
local _g1 = self.length;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
self[i] = nil;
|
||||
end;
|
||||
self.length = len;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
|
||||
Main.new = {}
|
||||
Main.main = function()
|
||||
__haxe_Log.trace("Hello World", _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="source/Main.hx",lineNumber=3,className="Main",methodName="main"}));
|
||||
end
|
||||
|
||||
Math.new = {}
|
||||
Math.isNaN = function(f)
|
||||
do return f ~= f end;
|
||||
end
|
||||
Math.isFinite = function(f)
|
||||
if (f > -_G.math.huge) then
|
||||
do return f < _G.math.huge end;
|
||||
else
|
||||
do return false end;
|
||||
end;
|
||||
end
|
||||
Math.min = function(a,b)
|
||||
if (Math.isNaN(a) or Math.isNaN(b)) then
|
||||
do return (0/0) end;
|
||||
else
|
||||
do return _G.math.min(a, b) end;
|
||||
end;
|
||||
end
|
||||
|
||||
String.new = function(string)
|
||||
local self = _hx_new(String.prototype)
|
||||
String.super(self,string)
|
||||
self = string
|
||||
return self
|
||||
end
|
||||
String.super = function(self,string)
|
||||
end
|
||||
String.__index = function(s,k)
|
||||
if (k == "length") then
|
||||
do return __lua_lib_luautf8_Utf8.len(s) end;
|
||||
else
|
||||
local o = String.prototype;
|
||||
local field = k;
|
||||
if ((function()
|
||||
local _hx_1
|
||||
if ((_G.type(o) == "string") and ((String.prototype[field] ~= nil) or (field == "length"))) then
|
||||
_hx_1 = true; elseif (o.__fields__ ~= nil) then
|
||||
_hx_1 = o.__fields__[field] ~= nil; else
|
||||
_hx_1 = o[field] ~= nil; end
|
||||
return _hx_1
|
||||
end )()) then
|
||||
do return String.prototype[k] end;
|
||||
else
|
||||
if (String.__oldindex ~= nil) then
|
||||
if (_G.type(String.__oldindex) == "function") then
|
||||
do return String.__oldindex(s, k) end;
|
||||
else
|
||||
if (_G.type(String.__oldindex) == "table") then
|
||||
do return String.__oldindex[k] end;
|
||||
end;
|
||||
end;
|
||||
do return nil end;
|
||||
else
|
||||
do return nil end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
String.fromCharCode = function(code)
|
||||
do return __lua_lib_luautf8_Utf8.char(code) end;
|
||||
end
|
||||
String.prototype = _hx_a();
|
||||
String.prototype.toUpperCase = function(self)
|
||||
do return __lua_lib_luautf8_Utf8.upper(self) end
|
||||
end
|
||||
String.prototype.toLowerCase = function(self)
|
||||
do return __lua_lib_luautf8_Utf8.lower(self) end
|
||||
end
|
||||
String.prototype.indexOf = function(self,str,startIndex)
|
||||
if (startIndex == nil) then
|
||||
startIndex = 1;
|
||||
else
|
||||
startIndex = startIndex + 1;
|
||||
end;
|
||||
local r = __lua_lib_luautf8_Utf8.find(self, str, startIndex, true);
|
||||
if ((r ~= nil) and (r > 0)) then
|
||||
do return r - 1 end;
|
||||
else
|
||||
do return -1 end;
|
||||
end;
|
||||
end
|
||||
String.prototype.lastIndexOf = function(self,str,startIndex)
|
||||
local i = 0;
|
||||
local ret = -1;
|
||||
if (startIndex == nil) then
|
||||
startIndex = __lua_lib_luautf8_Utf8.len(self);
|
||||
end;
|
||||
while (true) do
|
||||
local startIndex1 = ret + 1;
|
||||
if (startIndex1 == nil) then
|
||||
startIndex1 = 1;
|
||||
else
|
||||
startIndex1 = startIndex1 + 1;
|
||||
end;
|
||||
local r = __lua_lib_luautf8_Utf8.find(self, str, startIndex1, true);
|
||||
local p = (function()
|
||||
local _hx_1
|
||||
if ((r ~= nil) and (r > 0)) then
|
||||
_hx_1 = r - 1; else
|
||||
_hx_1 = -1; end
|
||||
return _hx_1
|
||||
end )();
|
||||
if ((p == -1) or (p > startIndex)) then
|
||||
break;
|
||||
end;
|
||||
ret = p;
|
||||
end;
|
||||
do return ret end
|
||||
end
|
||||
String.prototype.split = function(self,delimiter)
|
||||
local idx = 1;
|
||||
local ret = _hx_tab_array({}, 0);
|
||||
local delim_offset = (function()
|
||||
local _hx_1
|
||||
if (__lua_lib_luautf8_Utf8.len(delimiter) > 0) then
|
||||
_hx_1 = __lua_lib_luautf8_Utf8.len(delimiter); else
|
||||
_hx_1 = 1; end
|
||||
return _hx_1
|
||||
end )();
|
||||
while (idx ~= nil) do
|
||||
local newidx = 0;
|
||||
if (__lua_lib_luautf8_Utf8.len(delimiter) > 0) then
|
||||
newidx = __lua_lib_luautf8_Utf8.find(self, delimiter, idx, true);
|
||||
else
|
||||
if (idx >= __lua_lib_luautf8_Utf8.len(self)) then
|
||||
newidx = nil;
|
||||
else
|
||||
newidx = idx + 1;
|
||||
end;
|
||||
end;
|
||||
if (newidx ~= nil) then
|
||||
local match = __lua_lib_luautf8_Utf8.sub(self, idx, newidx - 1);
|
||||
ret:push(match);
|
||||
idx = newidx + __lua_lib_luautf8_Utf8.len(delimiter);
|
||||
else
|
||||
ret:push(__lua_lib_luautf8_Utf8.sub(self, idx, __lua_lib_luautf8_Utf8.len(self)));
|
||||
idx = nil;
|
||||
end;
|
||||
end;
|
||||
do return ret end
|
||||
end
|
||||
String.prototype.toString = function(self)
|
||||
do return self end
|
||||
end
|
||||
String.prototype.substring = function(self,startIndex,endIndex)
|
||||
if (endIndex == nil) then
|
||||
endIndex = __lua_lib_luautf8_Utf8.len(self);
|
||||
end;
|
||||
if (endIndex < 0) then
|
||||
endIndex = 0;
|
||||
end;
|
||||
if (startIndex < 0) then
|
||||
startIndex = 0;
|
||||
end;
|
||||
if (endIndex < startIndex) then
|
||||
do return __lua_lib_luautf8_Utf8.sub(self, endIndex + 1, startIndex) end;
|
||||
else
|
||||
do return __lua_lib_luautf8_Utf8.sub(self, startIndex + 1, endIndex) end;
|
||||
end;
|
||||
end
|
||||
String.prototype.charAt = function(self,index)
|
||||
do return __lua_lib_luautf8_Utf8.sub(self, index + 1, index + 1) end
|
||||
end
|
||||
String.prototype.charCodeAt = function(self,index)
|
||||
do return __lua_lib_luautf8_Utf8.byte(self, index + 1) end
|
||||
end
|
||||
String.prototype.substr = function(self,pos,len)
|
||||
if ((len == nil) or (len > (pos + __lua_lib_luautf8_Utf8.len(self)))) then
|
||||
len = __lua_lib_luautf8_Utf8.len(self);
|
||||
else
|
||||
if (len < 0) then
|
||||
len = __lua_lib_luautf8_Utf8.len(self) + len;
|
||||
end;
|
||||
end;
|
||||
if (pos < 0) then
|
||||
pos = __lua_lib_luautf8_Utf8.len(self) + pos;
|
||||
end;
|
||||
if (pos < 0) then
|
||||
pos = 0;
|
||||
end;
|
||||
do return __lua_lib_luautf8_Utf8.sub(self, pos + 1, pos + len) end
|
||||
end
|
||||
|
||||
Std.new = {}
|
||||
Std.string = function(s)
|
||||
do return __lua_Boot.__string_rec(s) end;
|
||||
end
|
||||
Std.int = function(x)
|
||||
if (not Math.isFinite(x) or Math.isNaN(x)) then
|
||||
do return 0 end;
|
||||
else
|
||||
do return _hx_bit_clamp(x) end;
|
||||
end;
|
||||
end
|
||||
|
||||
__haxe_Log.new = {}
|
||||
__haxe_Log.formatOutput = function(v,infos)
|
||||
local str = Std.string(v);
|
||||
if (infos == nil) then
|
||||
do return str end;
|
||||
end;
|
||||
local pstr = Std.string(Std.string(infos.fileName) .. Std.string(":")) .. Std.string(infos.lineNumber);
|
||||
if (infos.customParams ~= nil) then
|
||||
local _g = 0;
|
||||
local _g1 = infos.customParams;
|
||||
while (_g < _g1.length) do
|
||||
local v1 = _g1[_g];
|
||||
_g = _g + 1;
|
||||
str = Std.string(str) .. Std.string((Std.string(", ") .. Std.string(Std.string(v1))));
|
||||
end;
|
||||
end;
|
||||
do return Std.string(Std.string(pstr) .. Std.string(": ")) .. Std.string(str) end;
|
||||
end
|
||||
__haxe_Log.trace = function(v,infos)
|
||||
local str = __haxe_Log.formatOutput(v, infos);
|
||||
_hx_print(str);
|
||||
end
|
||||
|
||||
__lua_Boot.new = {}
|
||||
__lua_Boot.isArray = function(o)
|
||||
if (_G.type(o) == "table") then
|
||||
if ((o.__enum__ == nil) and (_G.getmetatable(o) ~= nil)) then
|
||||
do return _G.getmetatable(o).__index == Array.prototype end;
|
||||
else
|
||||
do return false end;
|
||||
end;
|
||||
else
|
||||
do return false end;
|
||||
end;
|
||||
end
|
||||
__lua_Boot.printEnum = function(o,s)
|
||||
if (o.length == 2) then
|
||||
do return o[0] end;
|
||||
else
|
||||
local str = Std.string(Std.string(o[0])) .. Std.string("(");
|
||||
s = Std.string(s) .. Std.string("\t");
|
||||
local _g = 2;
|
||||
local _g1 = o.length;
|
||||
while (_g < _g1) do
|
||||
_g = _g + 1;
|
||||
local i = _g - 1;
|
||||
if (i ~= 2) then
|
||||
str = Std.string(str) .. Std.string((Std.string(",") .. Std.string(__lua_Boot.__string_rec(o[i], s))));
|
||||
else
|
||||
str = Std.string(str) .. Std.string(__lua_Boot.__string_rec(o[i], s));
|
||||
end;
|
||||
end;
|
||||
do return Std.string(str) .. Std.string(")") end;
|
||||
end;
|
||||
end
|
||||
__lua_Boot.printClassRec = function(c,result,s)
|
||||
if (result == nil) then
|
||||
result = "";
|
||||
end;
|
||||
local f = __lua_Boot.__string_rec;
|
||||
for k,v in pairs(c) do if result ~= '' then result = result .. ', ' end result = result .. k .. ':' .. f(v, s.. ' ') end;
|
||||
do return result end;
|
||||
end
|
||||
__lua_Boot.__string_rec = function(o,s)
|
||||
if (s == nil) then
|
||||
s = "";
|
||||
end;
|
||||
if (__lua_lib_luautf8_Utf8.len(s) >= 5) then
|
||||
do return "<...>" end;
|
||||
end;
|
||||
local _g = type(o);
|
||||
if (_g) == "boolean" then
|
||||
do return tostring(o) end;
|
||||
elseif (_g) == "function" then
|
||||
do return "<function>" end;
|
||||
elseif (_g) == "nil" then
|
||||
do return "null" end;
|
||||
elseif (_g) == "number" then
|
||||
if (o == _G.math.huge) then
|
||||
do return "Infinity" end;
|
||||
else
|
||||
if (o == -_G.math.huge) then
|
||||
do return "-Infinity" end;
|
||||
else
|
||||
if (o == 0) then
|
||||
do return "0" end;
|
||||
else
|
||||
if (o ~= o) then
|
||||
do return "NaN" end;
|
||||
else
|
||||
do return tostring(o) end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
elseif (_g) == "string" then
|
||||
do return o end;
|
||||
elseif (_g) == "table" then
|
||||
if (o.__enum__ ~= nil) then
|
||||
do return __lua_Boot.printEnum(o, s) end;
|
||||
else
|
||||
if ((_hx_wrap_if_string_field(o,'toString') ~= nil) and not __lua_Boot.isArray(o)) then
|
||||
do return _hx_wrap_if_string_field(o,'toString')(o) end;
|
||||
else
|
||||
if (__lua_Boot.isArray(o)) then
|
||||
local o2 = o;
|
||||
if (__lua_lib_luautf8_Utf8.len(s) > 5) then
|
||||
do return "[...]" end;
|
||||
else
|
||||
local _g1 = _hx_tab_array({}, 0);
|
||||
local _g11 = 0;
|
||||
while (_g11 < o2.length) do
|
||||
local i = o2[_g11];
|
||||
_g11 = _g11 + 1;
|
||||
_g1:push(__lua_Boot.__string_rec(i, Std.string(s) .. Std.string(1)));
|
||||
end;
|
||||
do return Std.string(Std.string("[") .. Std.string(_g1:join(","))) .. Std.string("]") end;
|
||||
end;
|
||||
else
|
||||
if (o.__class__ ~= nil) then
|
||||
do return Std.string(Std.string("{") .. Std.string(__lua_Boot.printClassRec(o, "", Std.string(s) .. Std.string("\t")))) .. Std.string("}") end;
|
||||
else
|
||||
local fields = __lua_Boot.fieldIterator(o);
|
||||
local buffer = ({});
|
||||
local first = true;
|
||||
_G.table.insert(buffer, "{ ");
|
||||
local f = fields;
|
||||
while (f:hasNext()) do
|
||||
local f1 = f:next();
|
||||
if (first) then
|
||||
first = false;
|
||||
else
|
||||
_G.table.insert(buffer, ", ");
|
||||
end;
|
||||
_G.table.insert(buffer, Std.string(Std.string(Std.string("") .. Std.string(Std.string(f1))) .. Std.string(" : ")) .. Std.string(__lua_Boot.__string_rec(o[f1], Std.string(s) .. Std.string("\t"))));
|
||||
end;
|
||||
_G.table.insert(buffer, " }");
|
||||
do return _G.table.concat(buffer, "") end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
elseif (_g) == "thread" then
|
||||
do return "<thread>" end;
|
||||
elseif (_g) == "userdata" then
|
||||
local mt = _G.getmetatable(o);
|
||||
if ((mt ~= nil) and (mt.__tostring ~= nil)) then
|
||||
do return _G.tostring(o) end;
|
||||
else
|
||||
do return "<userdata>" end;
|
||||
end;else
|
||||
_G.error("Unknown Lua type",0); end;
|
||||
end
|
||||
__lua_Boot.fieldIterator = function(o)
|
||||
if (_G.type(o) ~= "table") then
|
||||
do return _hx_o({__fields__={next=true,hasNext=true},next=function(self)
|
||||
do return nil end;
|
||||
end,hasNext=function(self)
|
||||
do return false end;
|
||||
end}) end;
|
||||
end;
|
||||
local tbl = (function()
|
||||
local _hx_1
|
||||
if (o.__fields__ ~= nil) then
|
||||
_hx_1 = o.__fields__; else
|
||||
_hx_1 = o; end
|
||||
return _hx_1
|
||||
end )();
|
||||
local cur = _G.pairs(tbl);
|
||||
local next_valid = function(tbl1,val)
|
||||
while (__lua_Boot.hiddenFields[val] ~= nil) do
|
||||
val = cur(tbl1, val);
|
||||
end;
|
||||
do return val end;
|
||||
end;
|
||||
local cur_val = next_valid(tbl, cur(tbl, nil));
|
||||
do return _hx_o({__fields__={next=true,hasNext=true},next=function(self)
|
||||
local ret = cur_val;
|
||||
cur_val = next_valid(tbl, cur(tbl, cur_val));
|
||||
do return ret end;
|
||||
end,hasNext=function(self)
|
||||
do return cur_val ~= nil end;
|
||||
end}) end;
|
||||
end
|
||||
_hx_bit_clamp = function(v)
|
||||
if v <= 2147483647 and v >= -2147483648 then
|
||||
if v > 0 then return _G.math.floor(v)
|
||||
else return _G.math.ceil(v)
|
||||
end
|
||||
end
|
||||
if v > 2251798999999999 then v = v*2 end;
|
||||
if (v ~= v or math.abs(v) == _G.math.huge) then return nil end
|
||||
return _hx_bit.band(v, 2147483647 ) - math.abs(_hx_bit.band(v, 2147483648))
|
||||
end
|
||||
|
||||
-- require this for lua 5.1
|
||||
pcall(require, 'bit')
|
||||
if bit then
|
||||
_hx_bit = bit
|
||||
else
|
||||
local _hx_bit_raw = _G.require('bit32')
|
||||
_hx_bit = setmetatable({}, { __index = _hx_bit_raw });
|
||||
-- lua 5.2 weirdness
|
||||
_hx_bit.bnot = function(...) return _hx_bit_clamp(_hx_bit_raw.bnot(...)) end;
|
||||
_hx_bit.bxor = function(...) return _hx_bit_clamp(_hx_bit_raw.bxor(...)) end;
|
||||
end
|
||||
|
||||
_hx_array_mt.__index = Array.prototype
|
||||
|
||||
local _hx_static_init = function()
|
||||
__lua_Boot.hiddenFields = {__id__=true, hx__closures=true, super=true, prototype=true, __fields__=true, __ifields__=true, __class__=true, __properties__=true}
|
||||
|
||||
|
||||
end
|
||||
|
||||
_hx_print = print or (function() end)
|
||||
|
||||
_hx_wrap_if_string_field = function(o, fld)
|
||||
if _G.type(o) == 'string' then
|
||||
if fld == 'length' then
|
||||
return _G.string.len(o)
|
||||
else
|
||||
return String.prototype[fld]
|
||||
end
|
||||
else
|
||||
return o[fld]
|
||||
end
|
||||
end
|
||||
|
||||
_hx_static_init();
|
||||
Main.main()
|
||||
|
28
_testdata/Generated/Haxe/main.py
Normal file
28
_testdata/Generated/Haxe/main.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Haxe 4.0.5
|
||||
# coding: utf-8
|
||||
import sys
|
||||
|
||||
|
||||
|
||||
class Main:
|
||||
__slots__ = ()
|
||||
|
||||
@staticmethod
|
||||
def main():
|
||||
print("Hello World")
|
||||
|
||||
|
||||
class python_internal_MethodClosure:
|
||||
__slots__ = ("obj", "func")
|
||||
|
||||
def __init__(self,obj,func):
|
||||
self.obj = obj
|
||||
self.func = func
|
||||
|
||||
def __call__(self,*args):
|
||||
return self.func(self.obj,*args)
|
||||
|
||||
|
||||
|
||||
|
||||
Main.main()
|
2
_testdata/Generated/inline.css
Normal file
2
_testdata/Generated/inline.css
Normal file
@@ -0,0 +1,2 @@
|
||||
.accordion{padding:0;margin:0;position:relative;list-style:none}.accordion>*{position:absolute;overflow:hidden;padding:0;margin:0}.accordion .accordion,.accordion.edge-visible,.accordion>*{-webkit-transition:.3s ease all;-moz-transition:.3s ease all;-o-transition:.3s ease all;transition:.3s ease all}.accordion,.accordion>*{will-change:height,transform;-webkit-perspective:90em;-moz-perspective:90em;perspective:90em;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translateY(0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.snap.accordion .accordion,.snap.accordion>*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.accordion>*>:first-child{cursor:pointer;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.accordion>*>:last-child{overflow:hidden;-webkit-transition:.3s ease height,.3s step-start visibility;-moz-transition:.3s ease height,.3s step-start visibility;-o-transition:.3s ease height,.3s step-start visibility;transition:.3s ease height,.3s step-start visibility}.accordion>.closed .accordion>.open>:last-child,.accordion>.closed>:last-child{-webkit-transition-timing-function:ease,step-end;-moz-transition-timing-function:ease,step-end;-o-transition-timing-function:ease,step-end;transition-timing-function:ease,step-end;visibility:hidden}
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY29yZGlvbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsV0FDQyxRQUFTLEVBQ1QsT0FBUyxFQUNULFNBQVUsU0FDVixXQUFZLEtBRVosYUFDQyxTQUFVLFNBQ1YsU0FBVSxPQUNWLFFBQVMsRUFDVCxPQUFTLEVBSVQsc0JBREEsd0JBREEsYUFHQyxtQkFBb0IsSUFBSSxLQUFLLElBQzdCLGdCQUFvQixJQUFJLEtBQUssSUFDN0IsY0FBb0IsSUFBSSxLQUFLLElBQzdCLFdBQW9CLElBQUksS0FBSyxJQUk5QixXQUNBLGFBQ0MsWUFBYSxNQUFNLENBQUUsVUFDckIsb0JBQXFCLEtBQ3JCLGlCQUFxQixLQUNyQixZQUFxQixLQUVyQiw0QkFBNkIsT0FDN0IseUJBQTZCLE9BQzdCLG9CQUE2QixPQUU3QixrQkFBb0IsbUJBQ3BCLGVBQW9CLG1CQUNwQixjQUFvQixjQUNwQixhQUFvQixtQkFDcEIsVUFBb0IsbUJBS3JCLDJCQURBLGtCQUVDLG1CQUFvQixlQUNwQixnQkFBb0IsZUFDcEIsY0FBb0IsZUFDcEIsV0FBb0IsZUFJckIsMEJBQ0MsT0FBUSxRQUNSLE9BQVEsRUFFUixvQkFBcUIsS0FDckIsaUJBQXFCLEtBQ3JCLGdCQUFxQixLQUNyQixZQUFxQixLQUl0Qix5QkFDQyxTQUFVLE9BQ1YsbUJBQW9CLElBQUksS0FBSyxNQUFNLENBQUUsSUFBSSxXQUFXLFdBQ3BELGdCQUFvQixJQUFJLEtBQUssTUFBTSxDQUFFLElBQUksV0FBVyxXQUNwRCxjQUFvQixJQUFJLEtBQUssTUFBTSxDQUFFLElBQUksV0FBVyxXQUNwRCxXQUFvQixJQUFJLEtBQUssTUFBTSxDQUFFLElBQUksV0FBVyxXQUdwRCxnREFEQSwrQkFFQyxtQ0FBb0MsSUFBSSxDQUFFLFNBQzFDLGdDQUFvQyxJQUFJLENBQUUsU0FDMUMsOEJBQW9DLElBQUksQ0FBRSxTQUMxQywyQkFBb0MsSUFBSSxDQUFFLFNBQzFDLFdBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ29yZSBzdHlsaW5nICovXG4uYWNjb3JkaW9ue1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46ICAwO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cdC5hY2NvcmRpb24gPiAqe1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAgMDtcblx0fVxuXHRcdC5hY2NvcmRpb24gPiAqLFxuXHRcdC5hY2NvcmRpb24uZWRnZS12aXNpYmxlLFxuXHRcdC5hY2NvcmRpb24gLmFjY29yZGlvbntcblx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogLjNzIGVhc2UgYWxsO1xuXHRcdFx0LW1vei10cmFuc2l0aW9uOiAgICAuM3MgZWFzZSBhbGw7XG5cdFx0XHQtby10cmFuc2l0aW9uOiAgICAgIC4zcyBlYXNlIGFsbDtcblx0XHRcdHRyYW5zaXRpb246ICAgICAgICAgLjNzIGVhc2UgYWxsO1xuXHRcdH1cblx0XHRcblx0XHQvKiogVHJhbnNmb3JtLXJlbGF0ZWQgKi9cblx0XHQuYWNjb3JkaW9uLFxuXHRcdC5hY2NvcmRpb24gPiAqe1xuXHRcdFx0d2lsbC1jaGFuZ2U6IGhlaWdodCwgdHJhbnNmb3JtO1xuXHRcdFx0LXdlYmtpdC1wZXJzcGVjdGl2ZTogOTBlbTtcblx0XHRcdC1tb3otcGVyc3BlY3RpdmU6ICAgIDkwZW07XG5cdFx0XHRwZXJzcGVjdGl2ZTogICAgICAgICA5MGVtO1xuXHRcdFx0XG5cdFx0XHQtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHRcdC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogICAgaGlkZGVuO1xuXHRcdFx0YmFja2ZhY2UtdmlzaWJpbGl0eTogICAgICAgICBoaWRkZW47XG5cdFx0XHRcblx0XHRcdC13ZWJraXQtdHJhbnNmb3JtOiAgdHJhbnNsYXRlM2QoMCwwLDApO1xuXHRcdFx0LW1vei10cmFuc2Zvcm06ICAgICB0cmFuc2xhdGUzZCgwLDAsMCk7XG5cdFx0XHQtbXMtdHJhbnNmb3JtOiAgICAgIHRyYW5zbGF0ZVkoMCk7XG5cdFx0XHQtby10cmFuc2Zvcm06ICAgICAgIHRyYW5zbGF0ZTNkKDAsMCwwKTtcblx0XHRcdHRyYW5zZm9ybTogICAgICAgICAgdHJhbnNsYXRlM2QoMCwwLDApO1xuXHRcdH1cblx0XHRcblx0XHQvKiogUnVsZSB0byBkaXNhYmxlIHRyYW5zaXRpb25zIGJldHdlZW4gZ2FwIGNvcnJlY3Rpb25zICovXG5cdFx0LnNuYXAuYWNjb3JkaW9uID4gKixcblx0XHQuc25hcC5hY2NvcmRpb24gLmFjY29yZGlvbntcblx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0LW1vei10cmFuc2l0aW9uOiAgICBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHQtby10cmFuc2l0aW9uOiAgICAgIG5vbmUgIWltcG9ydGFudDtcblx0XHRcdHRyYW5zaXRpb246ICAgICAgICAgbm9uZSAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdC8qKiBIZWFkaW5ncyAqL1xuXHRcdC5hY2NvcmRpb24gPiAqID4gOmZpcnN0LWNoaWxke1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XG5cdFx0XHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuXHRcdFx0LW1vei11c2VyLXNlbGVjdDogICAgbm9uZTtcblx0XHRcdC1tcy11c2VyLXNlbGVjdDogICAgIG5vbmU7XG5cdFx0XHR1c2VyLXNlbGVjdDogICAgICAgICBub25lO1xuXHRcdH1cblx0XHRcblx0XHQvKiogQ29sbGFwc2libGUgY29udGVudCAqL1xuXHRcdC5hY2NvcmRpb24gPiAqID4gOmxhc3QtY2hpbGR7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0LXdlYmtpdC10cmFuc2l0aW9uOiAuM3MgZWFzZSBoZWlnaHQsIC4zcyBzdGVwLXN0YXJ0IHZpc2liaWxpdHk7XG5cdFx0XHQtbW96LXRyYW5zaXRpb246ICAgIC4zcyBlYXNlIGhlaWdodCwgLjNzIHN0ZXAtc3RhcnQgdmlzaWJpbGl0eTtcblx0XHRcdC1vLXRyYW5zaXRpb246ICAgICAgLjNzIGVhc2UgaGVpZ2h0LCAuM3Mgc3RlcC1zdGFydCB2aXNpYmlsaXR5O1xuXHRcdFx0dHJhbnNpdGlvbjogICAgICAgICAuM3MgZWFzZSBoZWlnaHQsIC4zcyBzdGVwLXN0YXJ0IHZpc2liaWxpdHk7XG5cdFx0fVxuXHRcdFx0LmFjY29yZGlvbiA+IC5jbG9zZWQgPiA6bGFzdC1jaGlsZCxcblx0XHRcdC5hY2NvcmRpb24gPiAuY2xvc2VkIC5hY2NvcmRpb24gPiAub3BlbiA+IDpsYXN0LWNoaWxke1xuXHRcdFx0XHQtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLCBzdGVwLWVuZDtcblx0XHRcdFx0LW1vei10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogICAgZWFzZSwgc3RlcC1lbmQ7XG5cdFx0XHRcdC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAgICAgIGVhc2UsIHN0ZXAtZW5kO1xuXHRcdFx0XHR0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogICAgICAgICBlYXNlLCBzdGVwLWVuZDtcblx0XHRcdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdFx0fVxuIl19 */
|
13
_testdata/Generated/inline.js
Normal file
13
_testdata/Generated/inline.js
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
|
||||
class Foo {
|
||||
constructor(){
|
||||
this.name = "Foo";
|
||||
}
|
||||
}
|
||||
|
||||
exports.Foo = Foo;
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtLmpzIiwic291cmNlcyI6WyJlc20ubWpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb28ge1xuXHRjb25zdHJ1Y3Rvcigpe1xuXHRcdHRoaXMubmFtZSA9IFwiRm9vXCI7XG5cdH1cbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFPLE1BQU0sR0FBRyxDQUFDO0NBQ2hCLFdBQVcsRUFBRTtFQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0VBQ2xCO0NBQ0Q7Ozs7In0=
|
2
_testdata/Generated/linked.css
Normal file
2
_testdata/Generated/linked.css
Normal file
@@ -0,0 +1,2 @@
|
||||
.accordion{padding:0;margin:0;position:relative;list-style:none}.accordion>*{position:absolute;overflow:hidden;padding:0;margin:0}.accordion .accordion,.accordion.edge-visible,.accordion>*{-webkit-transition:.3s ease all;-moz-transition:.3s ease all;-o-transition:.3s ease all;transition:.3s ease all}.accordion,.accordion>*{will-change:height,transform;-webkit-perspective:90em;-moz-perspective:90em;perspective:90em;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translateY(0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.snap.accordion .accordion,.snap.accordion>*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.accordion>*>:first-child{cursor:pointer;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.accordion>*>:last-child{overflow:hidden;-webkit-transition:.3s ease height,.3s step-start visibility;-moz-transition:.3s ease height,.3s step-start visibility;-o-transition:.3s ease height,.3s step-start visibility;transition:.3s ease height,.3s step-start visibility}.accordion>.closed .accordion>.open>:last-child,.accordion>.closed>:last-child{-webkit-transition-timing-function:ease,step-end;-moz-transition-timing-function:ease,step-end;-o-transition-timing-function:ease,step-end;transition-timing-function:ease,step-end;visibility:hidden}
|
||||
/*# sourceMappingURL=linked.css.map */
|
1
_testdata/Generated/linked.css.map
Normal file
1
_testdata/Generated/linked.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["accordion.css"],"names":[],"mappings":"AACA,WACC,QAAS,EACT,OAAS,EACT,SAAU,SACV,WAAY,KAEZ,aACC,SAAU,SACV,SAAU,OACV,QAAS,EACT,OAAS,EAIT,sBADA,wBADA,aAGC,mBAAoB,IAAI,KAAK,IAC7B,gBAAoB,IAAI,KAAK,IAC7B,cAAoB,IAAI,KAAK,IAC7B,WAAoB,IAAI,KAAK,IAI9B,WACA,aACC,YAAa,MAAM,CAAE,UACrB,oBAAqB,KACrB,iBAAqB,KACrB,YAAqB,KAErB,4BAA6B,OAC7B,yBAA6B,OAC7B,oBAA6B,OAE7B,kBAAoB,mBACpB,eAAoB,mBACpB,cAAoB,cACpB,aAAoB,mBACpB,UAAoB,mBAKrB,2BADA,kBAEC,mBAAoB,eACpB,gBAAoB,eACpB,cAAoB,eACpB,WAAoB,eAIrB,0BACC,OAAQ,QACR,OAAQ,EAER,oBAAqB,KACrB,iBAAqB,KACrB,gBAAqB,KACrB,YAAqB,KAItB,yBACC,SAAU,OACV,mBAAoB,IAAI,KAAK,MAAM,CAAE,IAAI,WAAW,WACpD,gBAAoB,IAAI,KAAK,MAAM,CAAE,IAAI,WAAW,WACpD,cAAoB,IAAI,KAAK,MAAM,CAAE,IAAI,WAAW,WACpD,WAAoB,IAAI,KAAK,MAAM,CAAE,IAAI,WAAW,WAGpD,gDADA,+BAEC,mCAAoC,IAAI,CAAE,SAC1C,gCAAoC,IAAI,CAAE,SAC1C,8BAAoC,IAAI,CAAE,SAC1C,2BAAoC,IAAI,CAAE,SAC1C,WAAY"}
|
7
_testdata/Generated/options_main.inherited.yy
Normal file
7
_testdata/Generated/options_main.inherited.yy
Normal file
@@ -0,0 +1,7 @@
|
||||
1.0.0←ed6a955d-5826-4f98-a450-10b414266c27←ed6a955d-5826-4f98-a450-10b414266c27|{
|
||||
"option_gameguid": "e429c80a-2ae4-494a-bee0-f7ed5e39ec9b"
|
||||
}←1225f6b0-ac20-43bd-a82e-be73fa0b6f4f|{
|
||||
"targets": 461609314234257646
|
||||
}←7b2c4976-1e09-44e5-8256-c527145e03bb|{
|
||||
"targets": 461609314234257646
|
||||
}
|
30
_testdata/Generated/ppport.h
Normal file
30
_testdata/Generated/ppport.h
Normal file
@@ -0,0 +1,30 @@
|
||||
#if 0
|
||||
<<'SKIP';
|
||||
#endif
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
ppport.h -- Perl/Pollution/Portability Version 3.36
|
||||
|
||||
Automatically created by Devel::PPPort running under perl 5.026002.
|
||||
|
||||
Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
|
||||
includes in parts/inc/ instead.
|
||||
|
||||
Use 'perldoc ppport.h' to view the documentation below.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
SKIP
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
ppport.h - Perl/Pollution/Portability version 3.36
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
perl ppport.h [options] [source files]
|
||||
|
||||
<< TRUNCATED >>
|
8
_testdata/HTML/attr-swapped.html
Normal file
8
_testdata/HTML/attr-swapped.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta
|
||||
content = "Org mode"
|
||||
name = "generator" >
|
||||
</head>
|
||||
</html>
|
12
_testdata/HTML/extra-attr.html
Normal file
12
_testdata/HTML/extra-attr.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta
|
||||
data-foo="Bar"
|
||||
http-equiv="Content-Type: text/html; charset=UTF-8"
|
||||
content = "Org mode"
|
||||
id="Some wicked id"
|
||||
wrong-content="whoops"
|
||||
name = "generator" >
|
||||
</head>
|
||||
</html>
|
6
_testdata/HTML/extra-spaces.html
Normal file
6
_testdata/HTML/extra-spaces.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name = "generator" content = "Org mode" />
|
||||
</head>
|
||||
</html>
|
7
_testdata/HTML/extra-tags.html
Normal file
7
_testdata/HTML/extra-tags.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta >
|
||||
<meta name="generator" content="something invalid">
|
||||
<meta name="generator" content="makeinfo 4.8"
|
||||
/>
|
||||
</html>
|
21
_testdata/HTML/grohtml.html
Normal file
21
_testdata/HTML/grohtml.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!-- Creator : groff version 1.22.4 -->
|
||||
<!-- CreationDate: Tue Jul 2 20:06:41 2019 -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta name="Content-Style" content="text/css">
|
||||
<style type="text/css">
|
||||
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
||||
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
||||
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
||||
h1 { text-align: center }
|
||||
</style>
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
... document truncated
|
||||
</body>
|
||||
</html>
|
25
_testdata/HTML/grohtml.xhtml
Normal file
25
_testdata/HTML/grohtml.xhtml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="us-ascii"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
|
||||
"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"
|
||||
[<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">]>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<meta name="generator" content="groff -Txhtml, see www.gnu.org"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/>
|
||||
<meta name="Content-Style" content="text/css"/>
|
||||
<style type="text/css">
|
||||
.center { text-align: center }
|
||||
.right { text-align: right }
|
||||
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
||||
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
||||
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
|
||||
h1 { text-align: center }
|
||||
</style>
|
||||
<!-- Creator : groff version 1.22.4 -->
|
||||
<!-- CreationDate: Tue Jul 2 20:08:09 2019 -->
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
... truncated
|
||||
</body>
|
||||
</html>
|
47
_testdata/HTML/makeinfo.html
Normal file
47
_testdata/HTML/makeinfo.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Asm Mode - GNU Emacs Manual</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="description" content="GNU Emacs Manual">
|
||||
<meta name="generator" content="makeinfo 4.8">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Programs.html#Programs" title="Programs">
|
||||
<link rel="prev" href="C-Modes.html#C-Modes" title="C Modes">
|
||||
<link rel="next" href="Fortran.html#Fortran" title="Fortran">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
This is the `GNU Emacs Manual',
|
||||
updated for Emacs version {No value for `EMACSVER'}.
|
||||
|
||||
Copyright (C) 1985--1987, 1993--2019 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation License,
|
||||
Version 1.3 or any later version published by the Free Software
|
||||
Foundation; with the Invariant Sections being ``The GNU
|
||||
Manifesto,'' ``Distribution'' and ``GNU GENERAL PUBLIC LICENSE,''
|
||||
with the Front-Cover Texts being ``A GNU Manual,'' and with the
|
||||
Back-Cover Texts as in (a) below. A copy of the license is
|
||||
included in the section entitled ``GNU Free Documentation
|
||||
License.''
|
||||
|
||||
(a) The FSF's Back-Cover Text is: ``You have the freedom to copy
|
||||
and modify this GNU manual. Buying copies from the FSF supports
|
||||
it in developing GNU and promoting software freedom.''
|
||||
-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
40
_testdata/HTML/mandoc.html
Normal file
40
_testdata/HTML/mandoc.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<!-- This is an automatically generated file. Do not edit.
|
||||
$OpenBSD: mandoc.1,v 1.161 2019/02/23 18:52:45 schwarze Exp $
|
||||
|
||||
Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
|
||||
Copyright (c) 2012, 2014-2018 Ingo Schwarze <schwarze@openbsd.org>
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<style>
|
||||
table.head, table.foot { width: 100%; }
|
||||
td.head-rtitle, td.foot-os { text-align: right; }
|
||||
td.head-vol { text-align: center; }
|
||||
div.Pp { margin: 1ex 0ex; }
|
||||
div.Nd, div.Bf, div.Op { display: inline; }
|
||||
span.Pa, span.Ad { font-style: italic; }
|
||||
span.Ms { font-weight: bold; }
|
||||
dl.Bl-diag > dt { font-weight: bold; }
|
||||
code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
|
||||
code.Cd { font-weight: bold; font-family: inherit; }
|
||||
</style>
|
||||
<title>MANDOC(1)</title>
|
||||
</head>
|
||||
<body>
|
||||
... document truncated
|
||||
</body>
|
||||
</html>
|
4
_testdata/HTML/no-content.html
Normal file
4
_testdata/HTML/no-content.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta name="generator" value="Some sick tool nobody's using yet" />
|
||||
</html>
|
73
_testdata/HTML/node78.html
Normal file
73
_testdata/HTML/node78.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with jLaTeX2HTML 2002-2-1 (1.70) JA patch-2.0
|
||||
patched version by: Kenshi Muto, Debian Project.
|
||||
* modified by: Shige TAKENO
|
||||
LaTeX2HTML 2002-2-1 (1.70),
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Quality/Complexity metric plugins</TITLE>
|
||||
<META NAME="description" CONTENT="Quality/Complexity metric plugins">
|
||||
<META NAME="keywords" CONTENT="main">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="jLaTeX2HTML v2002-2-1 JA patch-2.0">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="main.css">
|
||||
|
||||
<LINK REL="next" HREF="node79.html">
|
||||
<LINK REL="previous" HREF="node77.html">
|
||||
<LINK REL="up" HREF="node74.html">
|
||||
<LINK REL="next" HREF="node79.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html1237"
|
||||
HREF="node79.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html1233"
|
||||
HREF="node74.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html1227"
|
||||
HREF="node77.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html1235"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html1238"
|
||||
HREF="node79.html">Time signal generator</A>
|
||||
<B> Up:</B> <A NAME="tex2html1234"
|
||||
HREF="node74.html">Additional simulator components</A>
|
||||
<B> Previous:</B> <A NAME="tex2html1228"
|
||||
HREF="node77.html">Weather scenario ()</A>
|
||||
<B> <A NAME="tex2html1236"
|
||||
HREF="node1.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION000101400000000000000">
|
||||
Quality/Complexity metric plugins</A>
|
||||
</H3>
|
||||
Various plugins to measure schedule quality and problem complexity to suit the application.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Steve Fraser
|
||||
2008-01-31
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
20
_testdata/HTML/org-mode.html
Normal file
20
_testdata/HTML/org-mode.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2019-06-08 Sat 04:15 -->
|
||||
<meta http-equiv="Content-Type" /
|
||||
content="text/html;charset=utf-8" />
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>unpackaged.el</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Adam Porter" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
31
_testdata/HTML/pages.html
Normal file
31
_testdata/HTML/pages.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>Related Pages</title>
|
||||
<link href="qt.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class=header>
|
||||
<a class=headerLink href="index.html">Main Page</a> ·
|
||||
<a class=headerLink href="classoverview.html">Class Overview</a> ·
|
||||
<a class=headerLink href="hierarchy.html">Hierarchy</a> ·
|
||||
<a class=headerLink href="annotated.html">All Classes</a>
|
||||
</div>
|
||||
<!-- Generated by Doxygen 1.8.1.2 -->
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Related Pages</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
|
||||
<table class="directory">
|
||||
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="classoverview.html" target="_self">Class Overview</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="thelayoutsystem.html" target="_self">The Layout System</a></td><td class="desc"></td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
<div class="footer" />Generated with <a href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.1.2</div>
|
||||
</body>
|
||||
</html>
|
10
_testdata/HTML/quotes-double.html
Normal file
10
_testdata/HTML/quotes-double.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta
|
||||
name ="generator"
|
||||
content =
|
||||
"Org mode"
|
||||
>
|
||||
</head>
|
||||
</html>
|
6
_testdata/HTML/quotes-none.html
Normal file
6
_testdata/HTML/quotes-none.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name = generator content = makeinfo />
|
||||
</head>
|
||||
</html>
|
6
_testdata/HTML/quotes-single.html
Normal file
6
_testdata/HTML/quotes-single.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name = 'generator' content = 'Org mode'>
|
||||
</head>
|
||||
</html>
|
4
_testdata/HTML/ronn.html
Normal file
4
_testdata/HTML/ronn.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta name="generator" value="Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)" />
|
||||
</html>
|
4
_testdata/HTML/unknown.html
Normal file
4
_testdata/HTML/unknown.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta name="generator" content="Some sick tool nobody's using yet" />
|
||||
</html>
|
8
_testdata/HTML/uppercase.html
Normal file
8
_testdata/HTML/uppercase.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<META NAME= 'GENERATOR'
|
||||
CONTENT
|
||||
= 'ORG MODE'>
|
||||
</head>
|
||||
</html>
|
15
_testdata/JSON/2ea73365-b6f1-4bd1-a454-d57a67e50684.yy
Normal file
15
_testdata/JSON/2ea73365-b6f1-4bd1-a454-d57a67e50684.yy
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "2ea73365-b6f1-4bd1-a454-d57a67e50684",
|
||||
"modelName": "GMFolder",
|
||||
"mvc": "1.1",
|
||||
"name": "2ea73365-b6f1-4bd1-a454-d57a67e50684",
|
||||
"children": [
|
||||
"d74cdac8-2717-46a5-a8ed-5f732e02a268",
|
||||
"b68cebe1-d0fa-44ed-8a26-595c2885a1fc",
|
||||
"1e95eeaf-b11a-44a2-a1b0-bd201f6366ee"
|
||||
],
|
||||
"filterType": "GMSprite",
|
||||
"folderName": "sprites",
|
||||
"isDefaultView": false,
|
||||
"localisedFolderName": "ResourceTree_Sprites"
|
||||
}
|
374
_testdata/JSON/GMS2_Project.yyp
Normal file
374
_testdata/JSON/GMS2_Project.yyp
Normal file
@@ -0,0 +1,374 @@
|
||||
{
|
||||
"id": "62aa8308-837c-4613-a44e-a1306eee5c3c",
|
||||
"modelName": "GMProject",
|
||||
"mvc": "1.0",
|
||||
"IsDnDProject": false,
|
||||
"configs": [
|
||||
|
||||
],
|
||||
"option_ecma": false,
|
||||
"parentProject": {
|
||||
"id": "18731a27-007b-4c7c-802b-b7eac446e27a",
|
||||
"modelName": "GMProjectParent",
|
||||
"mvc": "1.0",
|
||||
"alteredResources": [
|
||||
{
|
||||
"Key": "ed6a955d-5826-4f98-a450-10b414266c27",
|
||||
"Value": {
|
||||
"configDeltas": [
|
||||
"inherited"
|
||||
],
|
||||
"id": "a3c2778c-ba48-40f4-b180-c31dd0bf91c2",
|
||||
"resourcePath": "options\\main\\options_main.yy",
|
||||
"resourceType": "GMMainOptions"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hiddenResources": [
|
||||
|
||||
],
|
||||
"projectPath": "${base_project}"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"Key": "05f45e8d-a727-4650-b0c2-0ac5f793f164",
|
||||
"Value": {
|
||||
"id": "6f75d81a-3fe8-484f-8178-ce66c6b9b8cf",
|
||||
"resourcePath": "views\\05f45e8d-a727-4650-b0c2-0ac5f793f164.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "128687b6-cf4b-4bad-bfec-52960e01a538",
|
||||
"Value": {
|
||||
"id": "ec6296c1-a5d9-4c21-b3e3-5d4363a2070c",
|
||||
"resourcePath": "views\\128687b6-cf4b-4bad-bfec-52960e01a538.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "1e95eeaf-b11a-44a2-a1b0-bd201f6366ee",
|
||||
"Value": {
|
||||
"id": "b109c79d-b9d0-4d6a-8b13-e460efb93824",
|
||||
"resourcePath": "views\\1e95eeaf-b11a-44a2-a1b0-bd201f6366ee.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "227a1abf-7147-4a8b-bb31-62a5d3a9a07e",
|
||||
"Value": {
|
||||
"id": "d2010bb7-ac3c-4717-a93e-edb7e447e257",
|
||||
"resourcePath": "objects\\obj_king\\obj_king.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "297651c9-b7a7-4a65-97f1-8ceb3b64f65d",
|
||||
"Value": {
|
||||
"id": "ab37c354-5987-4384-ae57-4edb8c73110d",
|
||||
"resourcePath": "views\\297651c9-b7a7-4a65-97f1-8ceb3b64f65d.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "2d0a83ba-80a2-40b2-8805-93347555ef97",
|
||||
"Value": {
|
||||
"id": "cb703663-2592-4c26-bfbb-a11a76390b27",
|
||||
"resourcePath": "objects\\par_depthobject\\par_depthobject.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "2ea73365-b6f1-4bd1-a454-d57a67e50684",
|
||||
"Value": {
|
||||
"id": "1136167c-dc54-4c46-b98d-c616e004866b",
|
||||
"resourcePath": "views\\2ea73365-b6f1-4bd1-a454-d57a67e50684.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "31ff7d32-f0cd-4e2e-a129-338e3e580a1a",
|
||||
"Value": {
|
||||
"id": "027854a7-69ad-4dd9-bb97-94cf1cd09c90",
|
||||
"resourcePath": "sprites\\spr_shadow\\spr_shadow.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "48b46420-2f90-4794-9064-b6fdfad99fbd",
|
||||
"Value": {
|
||||
"id": "843e68a6-9d39-4f4c-99b0-7e2beb280bdc",
|
||||
"resourcePath": "views\\48b46420-2f90-4794-9064-b6fdfad99fbd.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "4c4a5f6b-851e-45f2-9d16-4e770693d0d6",
|
||||
"Value": {
|
||||
"id": "d27ca460-a737-425d-b658-fda4e232da2d",
|
||||
"resourcePath": "views\\4c4a5f6b-851e-45f2-9d16-4e770693d0d6.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "53f34530-342f-440f-8cd3-3df3c5bfc232",
|
||||
"Value": {
|
||||
"id": "7189b8af-fafa-4643-b05a-1efec553c075",
|
||||
"resourcePath": "views\\53f34530-342f-440f-8cd3-3df3c5bfc232.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "556893b0-c414-45f4-b592-5ae7021b4e74",
|
||||
"Value": {
|
||||
"id": "aec12608-534e-4e2c-ad54-c3996c929309",
|
||||
"resourcePath": "objects\\depthsorter\\depthsorter.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "583b7bc3-11a0-419c-8028-17f69745ce53",
|
||||
"Value": {
|
||||
"id": "f6fd0fc5-a491-4c44-b798-e69b3ff043f7",
|
||||
"resourcePath": "sprites\\spr_knight\\spr_knight.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "5fd06095-db49-460e-9954-34d8113518c0",
|
||||
"Value": {
|
||||
"id": "043b6ae1-c67b-4478-8d4a-98c54da49c59",
|
||||
"resourcePath": "views\\5fd06095-db49-460e-9954-34d8113518c0.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "62e5c66d-8c36-4bc8-af71-c4119d077b56",
|
||||
"Value": {
|
||||
"id": "57e7a582-a710-4c41-9549-aa504dc9b2b0",
|
||||
"resourcePath": "sprites\\spr_player_idle\\spr_player_idle.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "638c7030-5359-4b3c-8e90-60cb3fcb9704",
|
||||
"Value": {
|
||||
"id": "60e7c880-7135-4f49-adb6-92520a22ca65",
|
||||
"resourcePath": "objects\\obj_greentree\\obj_greentree.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "78fc92d3-2675-43e1-a794-30066b3aea37",
|
||||
"Value": {
|
||||
"id": "7b9e43bd-7dbc-4b55-b3a5-88176788511a",
|
||||
"resourcePath": "objects\\obj_knight\\obj_knight.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "82f217a6-9373-47d2-85d9-14ce23a512a0",
|
||||
"Value": {
|
||||
"id": "bf7cdb17-ee68-4006-b102-afa68538dd7e",
|
||||
"resourcePath": "views\\82f217a6-9373-47d2-85d9-14ce23a512a0.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "83d63ce4-d03f-444b-b478-522ad5b314a9",
|
||||
"Value": {
|
||||
"id": "a927ec72-d381-4816-9d70-c9b78f3e9eb0",
|
||||
"resourcePath": "views\\83d63ce4-d03f-444b-b478-522ad5b314a9.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "8a96eadc-2360-466a-ae4a-7a71b1cfda17",
|
||||
"Value": {
|
||||
"id": "f5608dcf-9a81-490d-9373-fa59fc44fdbf",
|
||||
"resourcePath": "tilesets\\tileset_1\\tileset_1.yy",
|
||||
"resourceType": "GMTileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "8df8cbdc-c273-479a-83c9-496f2e62d294",
|
||||
"Value": {
|
||||
"id": "a74e5eb9-978f-47f3-aa50-20b7a3fa9baa",
|
||||
"resourcePath": "views\\8df8cbdc-c273-479a-83c9-496f2e62d294.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "9c35e2b5-ef9d-468c-8d88-8e8636785ca0",
|
||||
"Value": {
|
||||
"id": "fe440907-a939-4974-83aa-853900a43472",
|
||||
"resourcePath": "views\\9c35e2b5-ef9d-468c-8d88-8e8636785ca0.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "a09f41cd-a4f3-4818-9942-6c258e8a0b0e",
|
||||
"Value": {
|
||||
"id": "ae291c5c-f27e-44a2-a6a7-8192ba7a8297",
|
||||
"resourcePath": "views\\a09f41cd-a4f3-4818-9942-6c258e8a0b0e.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "a9188620-a624-4a5a-83ae-a1b53faf038b",
|
||||
"Value": {
|
||||
"id": "3a6a5b33-9543-4fad-922d-403ffb3e8fa2",
|
||||
"resourcePath": "options\\linux\\options_linux.yy",
|
||||
"resourceType": "GMLinuxOptions"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "a9c4bc40-93a0-4449-a951-9bfc82428101",
|
||||
"Value": {
|
||||
"id": "6b8e239a-9414-498c-85ae-23d5f8c1cb90",
|
||||
"resourcePath": "objects\\obj_collision\\obj_collision.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "aa4ccde8-d128-4dfe-a243-5efe2da9ff0d",
|
||||
"Value": {
|
||||
"id": "41ccb1a0-cf8e-4b28-a1fb-ce53f209bcd0",
|
||||
"resourcePath": "views\\aa4ccde8-d128-4dfe-a243-5efe2da9ff0d.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "ac913661-4852-4ce1-89ce-3a031aed6119",
|
||||
"Value": {
|
||||
"id": "09ddc355-efe1-4b77-9431-3bc87009e880",
|
||||
"resourcePath": "sprites\\spr_tileset1\\spr_tileset1.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "acfe2407-bee7-4ce9-ac58-d3327085f21b",
|
||||
"Value": {
|
||||
"id": "201500e6-154c-4c05-8221-57fdd65f74e7",
|
||||
"resourcePath": "sprites\\spr_player\\spr_player.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "af01d96e-a301-41cc-9c82-eb60af19cbae",
|
||||
"Value": {
|
||||
"id": "34f0d902-d0aa-4ab8-8d02-9d91150b816c",
|
||||
"resourcePath": "views\\af01d96e-a301-41cc-9c82-eb60af19cbae.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "b4fe38c4-c338-4d32-b85f-1b41d9a2446d",
|
||||
"Value": {
|
||||
"id": "ae19ee11-6b01-4f2b-8f55-adf5cb081961",
|
||||
"resourcePath": "sprites\\spr_collision\\spr_collision.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "b68cebe1-d0fa-44ed-8a26-595c2885a1fc",
|
||||
"Value": {
|
||||
"id": "1f6a859b-68fa-4564-bcb6-1fe387319eb4",
|
||||
"resourcePath": "views\\b68cebe1-d0fa-44ed-8a26-595c2885a1fc.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "bd8b3db8-e5e6-44f1-bfcf-45d3242a0122",
|
||||
"Value": {
|
||||
"id": "4450def6-f270-4dd7-8896-c9d8ac34be9b",
|
||||
"resourcePath": "sprites\\spr_scout\\spr_scout.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "bffbcd96-a8c7-431f-af4f-7f66e8f84189",
|
||||
"Value": {
|
||||
"id": "bfee4d13-6e16-41f6-9fb7-095126af6fcd",
|
||||
"resourcePath": "rooms\\rm_1\\rm_1.yy",
|
||||
"resourceType": "GMRoom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "cc3b80a7-5d09-4bea-b9c8-b093f1b244c8",
|
||||
"Value": {
|
||||
"id": "ac219fd8-ba00-4bff-857c-93d7cdb409c8",
|
||||
"resourcePath": "views\\cc3b80a7-5d09-4bea-b9c8-b093f1b244c8.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "cc98d028-7bdd-4680-85f3-c87a7baa481e",
|
||||
"Value": {
|
||||
"id": "a84e7ce1-a928-4a86-bd79-8355f266e12e",
|
||||
"resourcePath": "options\\windows\\options_windows.yy",
|
||||
"resourceType": "GMWindowsOptions"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "d3e83dba-5be8-436f-866d-9a5a2120adb1",
|
||||
"Value": {
|
||||
"id": "ca2f0120-77ec-4bb4-8b0b-c12af28e2db0",
|
||||
"resourcePath": "views\\d3e83dba-5be8-436f-866d-9a5a2120adb1.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "d74cdac8-2717-46a5-a8ed-5f732e02a268",
|
||||
"Value": {
|
||||
"id": "3b26d2bb-6a56-4a30-9c5a-47c3bcc83bb9",
|
||||
"resourcePath": "views\\d74cdac8-2717-46a5-a8ed-5f732e02a268.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "e3e41b8b-b981-42ce-aab7-e6265764c7a8",
|
||||
"Value": {
|
||||
"id": "a24e4fd7-f4da-4da0-aff1-da1bb864c0b4",
|
||||
"resourcePath": "views\\e3e41b8b-b981-42ce-aab7-e6265764c7a8.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "f1fbb653-bca3-4725-9e81-6a3556760d0c",
|
||||
"Value": {
|
||||
"id": "76dcd643-64fe-49d6-83ff-e15184b56150",
|
||||
"resourcePath": "objects\\obj_scout\\obj_scout.yy",
|
||||
"resourceType": "GMObject"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "f418569b-3bdd-4706-a0e4-364317f54032",
|
||||
"Value": {
|
||||
"id": "1292899d-f280-4f75-93b4-b2ad6099dd3d",
|
||||
"resourcePath": "options\\mac\\options_mac.yy",
|
||||
"resourceType": "GMMacOptions"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "f48fa589-53e5-4ce0-a010-c16b38192e31",
|
||||
"Value": {
|
||||
"id": "e950beb0-3503-4c3d-9cb9-8743c91d7c94",
|
||||
"resourcePath": "views\\f48fa589-53e5-4ce0-a010-c16b38192e31.yy",
|
||||
"resourceType": "GMFolder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Key": "fd46d5b1-fe49-4ecf-b809-0a2449808fbe",
|
||||
"Value": {
|
||||
"id": "09d46108-701a-4592-906f-bcb479008507",
|
||||
"resourcePath": "sprites\\spr_tree\\spr_tree.yy",
|
||||
"resourceType": "GMSprite"
|
||||
}
|
||||
}
|
||||
],
|
||||
"script_order": [
|
||||
|
||||
],
|
||||
"tutorial": ""
|
||||
}
|
625
_testdata/Java/GrammarKit.java
Normal file
625
_testdata/Java/GrammarKit.java
Normal file
@@ -0,0 +1,625 @@
|
||||
// This is a generated file. Not intended for manual editing.
|
||||
package org.intellij.grammar.parser;
|
||||
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.PsiBuilder.Marker;
|
||||
import static org.intellij.grammar.psi.BnfTypes.*;
|
||||
import static org.intellij.grammar.parser.GeneratedParserUtilBase.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import com.intellij.lang.PsiParser;
|
||||
import com.intellij.lang.LightPsiParser;
|
||||
|
||||
@SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"})
|
||||
public class GrammarParser implements PsiParser, LightPsiParser {
|
||||
|
||||
public ASTNode parse(IElementType t, PsiBuilder b) {
|
||||
parseLight(t, b);
|
||||
return b.getTreeBuilt();
|
||||
}
|
||||
|
||||
public void parseLight(IElementType t, PsiBuilder b) {
|
||||
boolean r;
|
||||
b = adapt_builder_(t, b, this, EXTENDS_SETS_);
|
||||
Marker m = enter_section_(b, 0, _COLLAPSE_, null);
|
||||
if (t == BNF_ATTR) {
|
||||
r = attr(b, 0);
|
||||
}
|
||||
else if (t == BNF_ATTR_PATTERN) {
|
||||
r = attr_pattern(b, 0);
|
||||
}
|
||||
else if (t == BNF_ATTR_VALUE) {
|
||||
r = attr_value(b, 0);
|
||||
}
|
||||
else if (t == BNF_ATTRS) {
|
||||
r = attrs(b, 0);
|
||||
}
|
||||
else if (t == BNF_CHOICE) {
|
||||
r = choice(b, 0);
|
||||
}
|
||||
else if (t == BNF_EXPRESSION) {
|
||||
r = expression(b, 0);
|
||||
}
|
||||
else if (t == BNF_LITERAL_EXPRESSION) {
|
||||
r = literal_expression(b, 0);
|
||||
}
|
||||
else if (t == BNF_MODIFIER) {
|
||||
r = modifier(b, 0);
|
||||
}
|
||||
else if (t == BNF_PAREN_EXPRESSION) {
|
||||
r = paren_expression(b, 0);
|
||||
}
|
||||
else if (t == BNF_PREDICATE) {
|
||||
r = predicate(b, 0);
|
||||
}
|
||||
else if (t == BNF_PREDICATE_SIGN) {
|
||||
r = predicate_sign(b, 0);
|
||||
}
|
||||
else if (t == BNF_QUANTIFIED) {
|
||||
r = quantified(b, 0);
|
||||
}
|
||||
else if (t == BNF_QUANTIFIER) {
|
||||
r = quantifier(b, 0);
|
||||
}
|
||||
else if (t == BNF_REFERENCE_OR_TOKEN) {
|
||||
r = reference_or_token(b, 0);
|
||||
}
|
||||
else if (t == BNF_RULE) {
|
||||
r = rule(b, 0);
|
||||
}
|
||||
else if (t == BNF_SEQUENCE) {
|
||||
r = sequence(b, 0);
|
||||
}
|
||||
else if (t == BNF_STRING_LITERAL_EXPRESSION) {
|
||||
r = string_literal_expression(b, 0);
|
||||
}
|
||||
else {
|
||||
r = parse_root_(t, b, 0);
|
||||
}
|
||||
exit_section_(b, 0, m, t, r, true, TRUE_CONDITION);
|
||||
}
|
||||
|
||||
protected boolean parse_root_(IElementType t, PsiBuilder b, int l) {
|
||||
return grammar(b, l + 1);
|
||||
}
|
||||
|
||||
public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] {
|
||||
create_token_set_(BNF_LITERAL_EXPRESSION, BNF_STRING_LITERAL_EXPRESSION),
|
||||
create_token_set_(BNF_CHOICE, BNF_EXPRESSION, BNF_LITERAL_EXPRESSION, BNF_PAREN_EXPRESSION,
|
||||
BNF_PREDICATE, BNF_QUANTIFIED, BNF_REFERENCE_OR_TOKEN, BNF_SEQUENCE,
|
||||
BNF_STRING_LITERAL_EXPRESSION),
|
||||
};
|
||||
|
||||
/* ********************************************************** */
|
||||
// id attr_pattern? '=' attr_value ';'?
|
||||
public static boolean attr(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr")) return false;
|
||||
boolean r, p;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<attr>");
|
||||
r = consumeToken(b, BNF_ID);
|
||||
p = r; // pin = 1
|
||||
r = r && report_error_(b, attr_1(b, l + 1));
|
||||
r = p && report_error_(b, consumeToken(b, BNF_OP_EQ)) && r;
|
||||
r = p && report_error_(b, attr_value(b, l + 1)) && r;
|
||||
r = p && attr_4(b, l + 1) && r;
|
||||
exit_section_(b, l, m, BNF_ATTR, r, p, attr_recover_until_parser_);
|
||||
return r || p;
|
||||
}
|
||||
|
||||
// attr_pattern?
|
||||
private static boolean attr_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_1")) return false;
|
||||
attr_pattern(b, l + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ';'?
|
||||
private static boolean attr_4(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_4")) return false;
|
||||
consumeToken(b, BNF_SEMICOLON);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '(' string ')'
|
||||
public static boolean attr_pattern(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_pattern")) return false;
|
||||
if (!nextTokenIs(b, BNF_LEFT_PAREN)) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, BNF_LEFT_PAREN);
|
||||
r = r && consumeToken(b, BNF_STRING);
|
||||
r = r && consumeToken(b, BNF_RIGHT_PAREN);
|
||||
exit_section_(b, m, BNF_ATTR_PATTERN, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// !'}'
|
||||
static boolean attr_recover_until(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_recover_until")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NOT_, null);
|
||||
r = !consumeToken(b, BNF_RIGHT_BRACE);
|
||||
exit_section_(b, l, m, null, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// (reference_or_token | literal_expression) !'='
|
||||
public static boolean attr_value(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_value")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<attr value>");
|
||||
r = attr_value_0(b, l + 1);
|
||||
r = r && attr_value_1(b, l + 1);
|
||||
exit_section_(b, l, m, BNF_ATTR_VALUE, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
// reference_or_token | literal_expression
|
||||
private static boolean attr_value_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_value_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = reference_or_token(b, l + 1);
|
||||
if (!r) r = literal_expression(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// !'='
|
||||
private static boolean attr_value_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attr_value_1")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NOT_, null);
|
||||
r = !consumeToken(b, BNF_OP_EQ);
|
||||
exit_section_(b, l, m, null, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '{' attr* '}'
|
||||
public static boolean attrs(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attrs")) return false;
|
||||
if (!nextTokenIs(b, BNF_LEFT_BRACE)) return false;
|
||||
boolean r, p;
|
||||
Marker m = enter_section_(b, l, _NONE_, null);
|
||||
r = consumeToken(b, BNF_LEFT_BRACE);
|
||||
p = r; // pin = 1
|
||||
r = r && report_error_(b, attrs_1(b, l + 1));
|
||||
r = p && consumeToken(b, BNF_RIGHT_BRACE) && r;
|
||||
exit_section_(b, l, m, BNF_ATTRS, r, p, null);
|
||||
return r || p;
|
||||
}
|
||||
|
||||
// attr*
|
||||
private static boolean attrs_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "attrs_1")) return false;
|
||||
int c = current_position_(b);
|
||||
while (true) {
|
||||
if (!attr(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "attrs_1", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '{' sequence ('|' sequence)* '}' | sequence choice_tail*
|
||||
public static boolean choice(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _COLLAPSE_, "<choice>");
|
||||
r = choice_0(b, l + 1);
|
||||
if (!r) r = choice_1(b, l + 1);
|
||||
exit_section_(b, l, m, BNF_CHOICE, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
// '{' sequence ('|' sequence)* '}'
|
||||
private static boolean choice_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, BNF_LEFT_BRACE);
|
||||
r = r && sequence(b, l + 1);
|
||||
r = r && choice_0_2(b, l + 1);
|
||||
r = r && consumeToken(b, BNF_RIGHT_BRACE);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// ('|' sequence)*
|
||||
private static boolean choice_0_2(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice_0_2")) return false;
|
||||
int c = current_position_(b);
|
||||
while (true) {
|
||||
if (!choice_0_2_0(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "choice_0_2", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// '|' sequence
|
||||
private static boolean choice_0_2_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice_0_2_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, BNF_OP_OR);
|
||||
r = r && sequence(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// sequence choice_tail*
|
||||
private static boolean choice_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice_1")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = sequence(b, l + 1);
|
||||
r = r && choice_1_1(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// choice_tail*
|
||||
private static boolean choice_1_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice_1_1")) return false;
|
||||
int c = current_position_(b);
|
||||
while (true) {
|
||||
if (!choice_tail(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "choice_1_1", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '|' sequence
|
||||
static boolean choice_tail(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "choice_tail")) return false;
|
||||
if (!nextTokenIs(b, BNF_OP_OR)) return false;
|
||||
boolean r, p;
|
||||
Marker m = enter_section_(b, l, _NONE_, null);
|
||||
r = consumeToken(b, BNF_OP_OR);
|
||||
p = r; // pin = 1
|
||||
r = r && sequence(b, l + 1);
|
||||
exit_section_(b, l, m, null, r, p, null);
|
||||
return r || p;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// choice?
|
||||
public static boolean expression(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "expression")) return false;
|
||||
Marker m = enter_section_(b, l, _COLLAPSE_, "<expression>");
|
||||
choice(b, l + 1);
|
||||
exit_section_(b, l, m, BNF_EXPRESSION, true, false, null);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// (attrs | rule) *
|
||||
static boolean grammar(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "grammar")) return false;
|
||||
int c = current_position_(b);
|
||||
while (true) {
|
||||
if (!grammar_0(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "grammar", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// attrs | rule
|
||||
private static boolean grammar_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "grammar_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = attrs(b, l + 1);
|
||||
if (!r) r = rule(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// string_literal_expression | number
|
||||
public static boolean literal_expression(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "literal_expression")) return false;
|
||||
if (!nextTokenIs(b, "<literal expression>", BNF_NUMBER, BNF_STRING)) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _COLLAPSE_, "<literal expression>");
|
||||
r = string_literal_expression(b, l + 1);
|
||||
if (!r) r = consumeToken(b, BNF_NUMBER);
|
||||
exit_section_(b, l, m, BNF_LITERAL_EXPRESSION, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// 'private' | 'external' | 'wrapped'
|
||||
public static boolean modifier(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "modifier")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<modifier>");
|
||||
r = consumeToken(b, "private");
|
||||
if (!r) r = consumeToken(b, "external");
|
||||
if (!r) r = consumeToken(b, "wrapped");
|
||||
exit_section_(b, l, m, BNF_MODIFIER, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// quantified | predicate
|
||||
static boolean option(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "option")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = quantified(b, l + 1);
|
||||
if (!r) r = predicate(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '(' expression ')'
|
||||
public static boolean paren_expression(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "paren_expression")) return false;
|
||||
if (!nextTokenIs(b, BNF_LEFT_PAREN)) return false;
|
||||
boolean r, p;
|
||||
Marker m = enter_section_(b, l, _NONE_, null);
|
||||
r = consumeToken(b, BNF_LEFT_PAREN);
|
||||
p = r; // pin = 1
|
||||
r = r && report_error_(b, expression(b, l + 1));
|
||||
r = p && consumeToken(b, BNF_RIGHT_PAREN) && r;
|
||||
exit_section_(b, l, m, BNF_PAREN_EXPRESSION, r, p, null);
|
||||
return r || p;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// predicate_sign simple
|
||||
public static boolean predicate(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "predicate")) return false;
|
||||
if (!nextTokenIs(b, "<predicate>", BNF_OP_NOT, BNF_OP_AND)) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<predicate>");
|
||||
r = predicate_sign(b, l + 1);
|
||||
r = r && simple(b, l + 1);
|
||||
exit_section_(b, l, m, BNF_PREDICATE, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '&' | '!'
|
||||
public static boolean predicate_sign(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "predicate_sign")) return false;
|
||||
if (!nextTokenIs(b, "<predicate sign>", BNF_OP_NOT, BNF_OP_AND)) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<predicate sign>");
|
||||
r = consumeToken(b, BNF_OP_AND);
|
||||
if (!r) r = consumeToken(b, BNF_OP_NOT);
|
||||
exit_section_(b, l, m, BNF_PREDICATE_SIGN, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '[' expression ']' | simple quantifier?
|
||||
public static boolean quantified(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "quantified")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _COLLAPSE_, "<quantified>");
|
||||
r = quantified_0(b, l + 1);
|
||||
if (!r) r = quantified_1(b, l + 1);
|
||||
exit_section_(b, l, m, BNF_QUANTIFIED, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
// '[' expression ']'
|
||||
private static boolean quantified_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "quantified_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, BNF_LEFT_BRACKET);
|
||||
r = r && expression(b, l + 1);
|
||||
r = r && consumeToken(b, BNF_RIGHT_BRACKET);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// simple quantifier?
|
||||
private static boolean quantified_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "quantified_1")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = simple(b, l + 1);
|
||||
r = r && quantified_1_1(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// quantifier?
|
||||
private static boolean quantified_1_1(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "quantified_1_1")) return false;
|
||||
quantifier(b, l + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// '?' | '+' | '*'
|
||||
public static boolean quantifier(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "quantifier")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<quantifier>");
|
||||
r = consumeToken(b, BNF_OP_OPT);
|
||||
if (!r) r = consumeToken(b, BNF_OP_ONEMORE);
|
||||
if (!r) r = consumeToken(b, BNF_OP_ZEROMORE);
|
||||
exit_section_(b, l, m, BNF_QUANTIFIER, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// id
|
||||
public static boolean reference_or_token(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "reference_or_token")) return false;
|
||||
if (!nextTokenIs(b, BNF_ID)) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, BNF_ID);
|
||||
exit_section_(b, m, BNF_REFERENCE_OR_TOKEN, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// modifier* id '::=' expression attrs? ';'?
|
||||
public static boolean rule(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "rule")) return false;
|
||||
boolean r, p;
|
||||
Marker m = enter_section_(b, l, _NONE_, "<rule>");
|
||||
r = rule_0(b, l + 1);
|
||||
r = r && consumeToken(b, BNF_ID);
|
||||
r = r && consumeToken(b, BNF_OP_IS);
|
||||
p = r; // pin = 3
|
||||
r = r && report_error_(b, expression(b, l + 1));
|
||||
r = p && report_error_(b, rule_4(b, l + 1)) && r;
|
||||
r = p && rule_5(b, l + 1) && r;
|
||||
exit_section_(b, l, m, BNF_RULE, r, p, rule_recover_until_parser_);
|
||||
return r || p;
|
||||
}
|
||||
|
||||
// modifier*
|
||||
private static boolean rule_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "rule_0")) return false;
|
||||
int c = current_position_(b);
|
||||
while (true) {
|
||||
if (!modifier(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "rule_0", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// attrs?
|
||||
private static boolean rule_4(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "rule_4")) return false;
|
||||
attrs(b, l + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ';'?
|
||||
private static boolean rule_5(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "rule_5")) return false;
|
||||
consumeToken(b, BNF_SEMICOLON);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// !'{'
|
||||
static boolean rule_recover_until(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "rule_recover_until")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NOT_, null);
|
||||
r = !consumeToken(b, BNF_LEFT_BRACE);
|
||||
exit_section_(b, l, m, null, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// option +
|
||||
public static boolean sequence(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "sequence")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _COLLAPSE_, "<sequence>");
|
||||
r = option(b, l + 1);
|
||||
int c = current_position_(b);
|
||||
while (r) {
|
||||
if (!option(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "sequence", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
exit_section_(b, l, m, BNF_SEQUENCE, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// !(modifier* id '::=' ) reference_or_token | literal_expression | paren_expression
|
||||
static boolean simple(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "simple")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = simple_0(b, l + 1);
|
||||
if (!r) r = literal_expression(b, l + 1);
|
||||
if (!r) r = paren_expression(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// !(modifier* id '::=' ) reference_or_token
|
||||
private static boolean simple_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "simple_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = simple_0_0(b, l + 1);
|
||||
r = r && reference_or_token(b, l + 1);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// !(modifier* id '::=' )
|
||||
private static boolean simple_0_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "simple_0_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NOT_, null);
|
||||
r = !simple_0_0_0(b, l + 1);
|
||||
exit_section_(b, l, m, null, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
||||
// modifier* id '::='
|
||||
private static boolean simple_0_0_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "simple_0_0_0")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = simple_0_0_0_0(b, l + 1);
|
||||
r = r && consumeToken(b, BNF_ID);
|
||||
r = r && consumeToken(b, BNF_OP_IS);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// modifier*
|
||||
private static boolean simple_0_0_0_0(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "simple_0_0_0_0")) return false;
|
||||
int c = current_position_(b);
|
||||
while (true) {
|
||||
if (!modifier(b, l + 1)) break;
|
||||
if (!empty_element_parsed_guard_(b, "simple_0_0_0_0", c)) break;
|
||||
c = current_position_(b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// string
|
||||
public static boolean string_literal_expression(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "string_literal_expression")) return false;
|
||||
if (!nextTokenIs(b, BNF_STRING)) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, BNF_STRING);
|
||||
exit_section_(b, m, BNF_STRING_LITERAL_EXPRESSION, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
final static Parser attr_recover_until_parser_ = new Parser() {
|
||||
public boolean parse(PsiBuilder b, int l) {
|
||||
return attr_recover_until(b, l + 1);
|
||||
}
|
||||
};
|
||||
final static Parser rule_recover_until_parser_ = new Parser() {
|
||||
public boolean parse(PsiBuilder b, int l) {
|
||||
return rule_recover_until(b, l + 1);
|
||||
}
|
||||
};
|
||||
}
|
482
_testdata/Java/JFlexLexer.java
Normal file
482
_testdata/Java/JFlexLexer.java
Normal file
@@ -0,0 +1,482 @@
|
||||
/* The following code was generated by JFlex 1.4.3 on 28/01/16 11:27 */
|
||||
|
||||
package test;
|
||||
import com.intellij.lexer.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import static org.intellij.grammar.psi.BnfTypes.*;
|
||||
|
||||
|
||||
/**
|
||||
* This class is a scanner generated by
|
||||
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
|
||||
* on 28/01/16 11:27 from the specification file
|
||||
* <tt>/home/abigail/code/intellij-grammar-kit-test/src/test/_GrammarLexer.flex</tt>
|
||||
*/
|
||||
public class _GrammarLexer implements FlexLexer {
|
||||
/** initial size of the lookahead buffer */
|
||||
private static final int ZZ_BUFFERSIZE = 16384;
|
||||
|
||||
/** lexical states */
|
||||
public static final int YYINITIAL = 0;
|
||||
|
||||
/**
|
||||
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
|
||||
* ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
|
||||
* at the beginning of a line
|
||||
* l is of the form l = 2*k, k a non negative integer
|
||||
*/
|
||||
private static final int ZZ_LEXSTATE[] = {
|
||||
0, 0
|
||||
};
|
||||
|
||||
/**
|
||||
* Translates characters to character classes
|
||||
*/
|
||||
private static final String ZZ_CMAP_PACKED =
|
||||
"\11\0\1\1\1\1\1\0\1\1\1\1\22\0\1\1\101\0\1\13"+
|
||||
"\1\0\1\3\1\14\1\0\1\10\1\0\1\2\3\0\1\12\1\7"+
|
||||
"\3\0\1\6\1\4\1\5\1\11\uff8a\0";
|
||||
|
||||
/**
|
||||
* Translates characters to character classes
|
||||
*/
|
||||
private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
|
||||
|
||||
/**
|
||||
* Translates DFA states to action switch labels.
|
||||
*/
|
||||
private static final int [] ZZ_ACTION = zzUnpackAction();
|
||||
|
||||
private static final String ZZ_ACTION_PACKED_0 =
|
||||
"\1\0\1\1\1\2\3\1\1\3\10\0\1\4\1\5";
|
||||
|
||||
private static int [] zzUnpackAction() {
|
||||
int [] result = new int[17];
|
||||
int offset = 0;
|
||||
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int zzUnpackAction(String packed, int offset, int [] result) {
|
||||
int i = 0; /* index in packed string */
|
||||
int j = offset; /* index in unpacked array */
|
||||
int l = packed.length();
|
||||
while (i < l) {
|
||||
int count = packed.charAt(i++);
|
||||
int value = packed.charAt(i++);
|
||||
do result[j++] = value; while (--count > 0);
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Translates a state to a row index in the transition table
|
||||
*/
|
||||
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
|
||||
|
||||
private static final String ZZ_ROWMAP_PACKED_0 =
|
||||
"\0\0\0\15\0\32\0\47\0\64\0\101\0\15\0\116"+
|
||||
"\0\133\0\150\0\165\0\202\0\217\0\234\0\251\0\15"+
|
||||
"\0\15";
|
||||
|
||||
private static int [] zzUnpackRowMap() {
|
||||
int [] result = new int[17];
|
||||
int offset = 0;
|
||||
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int zzUnpackRowMap(String packed, int offset, int [] result) {
|
||||
int i = 0; /* index in packed string */
|
||||
int j = offset; /* index in unpacked array */
|
||||
int l = packed.length();
|
||||
while (i < l) {
|
||||
int high = packed.charAt(i++) << 16;
|
||||
result[j++] = high | packed.charAt(i++);
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
/**
|
||||
* The transition table of the DFA
|
||||
*/
|
||||
private static final int [] ZZ_TRANS = zzUnpackTrans();
|
||||
|
||||
private static final String ZZ_TRANS_PACKED_0 =
|
||||
"\1\2\1\3\1\4\1\2\1\5\2\2\1\6\5\2"+
|
||||
"\16\0\1\3\16\0\1\7\16\0\1\10\20\0\1\11"+
|
||||
"\11\0\1\12\20\0\1\13\4\0\1\14\25\0\1\15"+
|
||||
"\10\0\1\16\21\0\1\17\10\0\1\20\12\0\1\21"+
|
||||
"\6\0";
|
||||
|
||||
private static int [] zzUnpackTrans() {
|
||||
int [] result = new int[182];
|
||||
int offset = 0;
|
||||
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int zzUnpackTrans(String packed, int offset, int [] result) {
|
||||
int i = 0; /* index in packed string */
|
||||
int j = offset; /* index in unpacked array */
|
||||
int l = packed.length();
|
||||
while (i < l) {
|
||||
int count = packed.charAt(i++);
|
||||
int value = packed.charAt(i++);
|
||||
value--;
|
||||
do result[j++] = value; while (--count > 0);
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
|
||||
/* error codes */
|
||||
private static final int ZZ_UNKNOWN_ERROR = 0;
|
||||
private static final int ZZ_NO_MATCH = 1;
|
||||
private static final int ZZ_PUSHBACK_2BIG = 2;
|
||||
private static final char[] EMPTY_BUFFER = new char[0];
|
||||
private static final int YYEOF = -1;
|
||||
private static java.io.Reader zzReader = null; // Fake
|
||||
|
||||
/* error messages for the codes above */
|
||||
private static final String ZZ_ERROR_MSG[] = {
|
||||
"Unkown internal scanner error",
|
||||
"Error: could not match input",
|
||||
"Error: pushback value was too large"
|
||||
};
|
||||
|
||||
/**
|
||||
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
|
||||
*/
|
||||
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
|
||||
|
||||
private static final String ZZ_ATTRIBUTE_PACKED_0 =
|
||||
"\1\0\1\11\4\1\1\11\10\0\2\11";
|
||||
|
||||
private static int [] zzUnpackAttribute() {
|
||||
int [] result = new int[17];
|
||||
int offset = 0;
|
||||
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int zzUnpackAttribute(String packed, int offset, int [] result) {
|
||||
int i = 0; /* index in packed string */
|
||||
int j = offset; /* index in unpacked array */
|
||||
int l = packed.length();
|
||||
while (i < l) {
|
||||
int count = packed.charAt(i++);
|
||||
int value = packed.charAt(i++);
|
||||
do result[j++] = value; while (--count > 0);
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
/** the current state of the DFA */
|
||||
private int zzState;
|
||||
|
||||
/** the current lexical state */
|
||||
private int zzLexicalState = YYINITIAL;
|
||||
|
||||
/** this buffer contains the current text to be matched and is
|
||||
the source of the yytext() string */
|
||||
private CharSequence zzBuffer = "";
|
||||
|
||||
/** this buffer may contains the current text array to be matched when it is cheap to acquire it */
|
||||
private char[] zzBufferArray;
|
||||
|
||||
/** the textposition at the last accepting state */
|
||||
private int zzMarkedPos;
|
||||
|
||||
/** the textposition at the last state to be included in yytext */
|
||||
private int zzPushbackPos;
|
||||
|
||||
/** the current text position in the buffer */
|
||||
private int zzCurrentPos;
|
||||
|
||||
/** startRead marks the beginning of the yytext() string in the buffer */
|
||||
private int zzStartRead;
|
||||
|
||||
/** endRead marks the last character in the buffer, that has been read
|
||||
from input */
|
||||
private int zzEndRead;
|
||||
|
||||
/**
|
||||
* zzAtBOL == true <=> the scanner is currently at the beginning of a line
|
||||
*/
|
||||
private boolean zzAtBOL = true;
|
||||
|
||||
/** zzAtEOF == true <=> the scanner is at the EOF */
|
||||
private boolean zzAtEOF;
|
||||
|
||||
/* user code: */
|
||||
public _GrammarLexer() {
|
||||
this((java.io.Reader)null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new scanner
|
||||
*
|
||||
* @param in the java.io.Reader to read input from.
|
||||
*/
|
||||
public _GrammarLexer(java.io.Reader in) {
|
||||
this.zzReader = in;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Unpacks the compressed character translation table.
|
||||
*
|
||||
* @param packed the packed character translation table
|
||||
* @return the unpacked character translation table
|
||||
*/
|
||||
private static char [] zzUnpackCMap(String packed) {
|
||||
char [] map = new char[0x10000];
|
||||
int i = 0; /* index in packed string */
|
||||
int j = 0; /* index in unpacked array */
|
||||
while (i < 52) {
|
||||
int count = packed.charAt(i++);
|
||||
char value = packed.charAt(i++);
|
||||
do map[j++] = value; while (--count > 0);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
public final int getTokenStart(){
|
||||
return zzStartRead;
|
||||
}
|
||||
|
||||
public final int getTokenEnd(){
|
||||
return getTokenStart() + yylength();
|
||||
}
|
||||
|
||||
public void reset(CharSequence buffer, int start, int end,int initialState){
|
||||
zzBuffer = buffer;
|
||||
zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
|
||||
zzCurrentPos = zzMarkedPos = zzStartRead = start;
|
||||
zzPushbackPos = 0;
|
||||
zzAtEOF = false;
|
||||
zzAtBOL = true;
|
||||
zzEndRead = end;
|
||||
yybegin(initialState);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refills the input buffer.
|
||||
*
|
||||
* @return <code>false</code>, iff there was new input.
|
||||
*
|
||||
* @exception java.io.IOException if any I/O-Error occurs
|
||||
*/
|
||||
private boolean zzRefill() throws java.io.IOException {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current lexical state.
|
||||
*/
|
||||
public final int yystate() {
|
||||
return zzLexicalState;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enters a new lexical state
|
||||
*
|
||||
* @param newState the new lexical state
|
||||
*/
|
||||
public final void yybegin(int newState) {
|
||||
zzLexicalState = newState;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the text matched by the current regular expression.
|
||||
*/
|
||||
public final CharSequence yytext() {
|
||||
return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the character at position <tt>pos</tt> from the
|
||||
* matched text.
|
||||
*
|
||||
* It is equivalent to yytext().charAt(pos), but faster
|
||||
*
|
||||
* @param pos the position of the character to fetch.
|
||||
* A value from 0 to yylength()-1.
|
||||
*
|
||||
* @return the character at position pos
|
||||
*/
|
||||
public final char yycharat(int pos) {
|
||||
return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the length of the matched text region.
|
||||
*/
|
||||
public final int yylength() {
|
||||
return zzMarkedPos-zzStartRead;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reports an error that occured while scanning.
|
||||
*
|
||||
* In a wellformed scanner (no or only correct usage of
|
||||
* yypushback(int) and a match-all fallback rule) this method
|
||||
* will only be called with things that "Can't Possibly Happen".
|
||||
* If this method is called, something is seriously wrong
|
||||
* (e.g. a JFlex bug producing a faulty scanner etc.).
|
||||
*
|
||||
* Usual syntax/scanner level error handling should be done
|
||||
* in error fallback rules.
|
||||
*
|
||||
* @param errorCode the code of the errormessage to display
|
||||
*/
|
||||
private void zzScanError(int errorCode) {
|
||||
String message;
|
||||
try {
|
||||
message = ZZ_ERROR_MSG[errorCode];
|
||||
}
|
||||
catch (ArrayIndexOutOfBoundsException e) {
|
||||
message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
|
||||
}
|
||||
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Pushes the specified amount of characters back into the input stream.
|
||||
*
|
||||
* They will be read again by then next call of the scanning method
|
||||
*
|
||||
* @param number the number of characters to be read again.
|
||||
* This number must not be greater than yylength()!
|
||||
*/
|
||||
public void yypushback(int number) {
|
||||
if ( number > yylength() )
|
||||
zzScanError(ZZ_PUSHBACK_2BIG);
|
||||
|
||||
zzMarkedPos -= number;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resumes scanning until the next regular expression is matched,
|
||||
* the end of input is encountered or an I/O-Error occurs.
|
||||
*
|
||||
* @return the next token
|
||||
* @exception java.io.IOException if any I/O-Error occurs
|
||||
*/
|
||||
public IElementType advance() throws java.io.IOException {
|
||||
int zzInput;
|
||||
int zzAction;
|
||||
|
||||
// cached fields:
|
||||
int zzCurrentPosL;
|
||||
int zzMarkedPosL;
|
||||
int zzEndReadL = zzEndRead;
|
||||
CharSequence zzBufferL = zzBuffer;
|
||||
char[] zzBufferArrayL = zzBufferArray;
|
||||
char [] zzCMapL = ZZ_CMAP;
|
||||
|
||||
int [] zzTransL = ZZ_TRANS;
|
||||
int [] zzRowMapL = ZZ_ROWMAP;
|
||||
int [] zzAttrL = ZZ_ATTRIBUTE;
|
||||
|
||||
while (true) {
|
||||
zzMarkedPosL = zzMarkedPos;
|
||||
|
||||
zzAction = -1;
|
||||
|
||||
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
|
||||
|
||||
zzState = ZZ_LEXSTATE[zzLexicalState];
|
||||
|
||||
|
||||
zzForAction: {
|
||||
while (true) {
|
||||
|
||||
if (zzCurrentPosL < zzEndReadL)
|
||||
zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
|
||||
else if (zzAtEOF) {
|
||||
zzInput = YYEOF;
|
||||
break zzForAction;
|
||||
}
|
||||
else {
|
||||
// store back cached positions
|
||||
zzCurrentPos = zzCurrentPosL;
|
||||
zzMarkedPos = zzMarkedPosL;
|
||||
boolean eof = zzRefill();
|
||||
// get translated positions and possibly new buffer
|
||||
zzCurrentPosL = zzCurrentPos;
|
||||
zzMarkedPosL = zzMarkedPos;
|
||||
zzBufferL = zzBuffer;
|
||||
zzEndReadL = zzEndRead;
|
||||
if (eof) {
|
||||
zzInput = YYEOF;
|
||||
break zzForAction;
|
||||
}
|
||||
else {
|
||||
zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
|
||||
}
|
||||
}
|
||||
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
|
||||
if (zzNext == -1) break zzForAction;
|
||||
zzState = zzNext;
|
||||
|
||||
int zzAttributes = zzAttrL[zzState];
|
||||
if ( (zzAttributes & 1) == 1 ) {
|
||||
zzAction = zzState;
|
||||
zzMarkedPosL = zzCurrentPosL;
|
||||
if ( (zzAttributes & 8) == 8 ) break zzForAction;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// store back cached position
|
||||
zzMarkedPos = zzMarkedPosL;
|
||||
|
||||
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
|
||||
case 1:
|
||||
{ return com.intellij.psi.TokenType.BAD_CHARACTER;
|
||||
}
|
||||
case 6: break;
|
||||
case 4:
|
||||
{ return BNF_STRING;
|
||||
}
|
||||
case 7: break;
|
||||
case 5:
|
||||
{ return BNF_NUMBER;
|
||||
}
|
||||
case 8: break;
|
||||
case 3:
|
||||
{ return BNF_ID;
|
||||
}
|
||||
case 9: break;
|
||||
case 2:
|
||||
{ return com.intellij.psi.TokenType.WHITE_SPACE;
|
||||
}
|
||||
case 10: break;
|
||||
default:
|
||||
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
|
||||
zzAtEOF = true;
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
zzScanError(ZZ_NO_MATCH);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
18
_testdata/JavaScript/jquery-1.6.1.min.js
vendored
Normal file
18
_testdata/JavaScript/jquery-1.6.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
93
_testdata/JavaScript/namespace.js
Normal file
93
_testdata/JavaScript/namespace.js
Normal file
@@ -0,0 +1,93 @@
|
||||
(function(root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(['lodash'], factory);
|
||||
} else if (typeof exports !== 'undefined') {
|
||||
module.exports = factory(require('lodash'));
|
||||
} else {
|
||||
root.Namespace = factory(root._);
|
||||
}
|
||||
})(this, function(_) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @module namespace
|
||||
* @class namespace
|
||||
*/
|
||||
function Namespace() {}
|
||||
|
||||
/**
|
||||
* Regex for splitting keypaths into arrays.
|
||||
*
|
||||
* @private
|
||||
* @const {RegExp}
|
||||
* @type
|
||||
*/
|
||||
var KEYPATH_SPLITTER = /\./g;
|
||||
|
||||
/**
|
||||
* An internal cache to avoid calculating a keypath more than once.
|
||||
*
|
||||
* @private
|
||||
* @type {Object}
|
||||
*/
|
||||
var _keypaths = {};
|
||||
|
||||
_.extend(Namespace.prototype, {
|
||||
|
||||
/**
|
||||
* Adds a definition to the namespace object.
|
||||
*
|
||||
* @public
|
||||
* @instance
|
||||
* @method add
|
||||
* @param {String} keypath - The keypath for the definition to be added at.
|
||||
* @param {Function|Object} definition - The definition to be added.
|
||||
* @return {Function|Object} - The definition.
|
||||
*/
|
||||
add: function(keypath, definition) {
|
||||
return this._walk(keypath, function(memo, name, index, keypath) {
|
||||
if (index + 1 === keypath.length) {
|
||||
memo[name] = _.extend(definition, memo[name]);
|
||||
}
|
||||
return memo[name] || (memo[name] = {});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieves a definition from the namespace safely.
|
||||
*
|
||||
* @public
|
||||
* @instance
|
||||
* @method get
|
||||
* @param {String} keypath - The keypath to lookup a definition for.
|
||||
* @returns {Function|Object|undefined} - The definition if it exists, otherwise `undefined`.
|
||||
*/
|
||||
get: function(keypath) {
|
||||
return this._walk(keypath);
|
||||
},
|
||||
|
||||
/**
|
||||
* An internal function for walking a keypath.
|
||||
*
|
||||
* @private
|
||||
* @instance
|
||||
* @method _walk
|
||||
* @param {String} keypath - The keypath to walk through.
|
||||
* @param {Function} [callback] - An optional callback to be called at each item in the path.
|
||||
* @returns {function|Object|undefined} - The reduced keypath.
|
||||
*/
|
||||
_walk: function(keypath, callback) {
|
||||
return _.reduce(
|
||||
_keypaths[keypath] || (_keypaths[keypath] = keypath.split(KEYPATH_SPLITTER)),
|
||||
callback || function(memo, name) {
|
||||
return memo && memo[name];
|
||||
},
|
||||
this
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
return Namespace;
|
||||
});
|
||||
|
||||
//# sourceMappingURL=namespace.js.map
|
78
_testdata/PostScript/lambda.pfa
Normal file
78
_testdata/PostScript/lambda.pfa
Normal file
@@ -0,0 +1,78 @@
|
||||
%!PS-AdobeFont-1.0: Greek_Lambda_Character-Regular 020.017
|
||||
%%Title: Greek_Lambda_Character-Regular
|
||||
%Version: 020.017
|
||||
%%CreationDate: Sun Jul 23 23:14:02 2017
|
||||
%%Creator: John Gardner /ThatGuyLinguistWatchersAreSickOf
|
||||
%Copyright: NONE. NADA. PUBLIC DOMAIN, BOI
|
||||
% Generated by FontForge 20170719 (http://fontforge.sf.net/)
|
||||
%%EndComments
|
||||
|
||||
10 dict begin
|
||||
/FontType 1 def
|
||||
/FontMatrix [0.000488281 0 0 0.000488281 0 0 ]readonly def
|
||||
/FontName /Greek_Lambda_Character-Regular def
|
||||
/FontBBox {68 -362 1158 1556 }readonly def
|
||||
/PaintType 0 def
|
||||
/FontInfo 11 dict dup begin
|
||||
/version (020.017) readonly def
|
||||
/Notice (NONE. NADA. PUBLIC DOMAIN, BOI) readonly def
|
||||
/FullName (Greek_Lambda_Character Regular) readonly def
|
||||
/FamilyName (Greek_Lambda_Character) readonly def
|
||||
/Weight (Regular) readonly def
|
||||
/FSType 8 def
|
||||
/ItalicAngle 0 def
|
||||
/isFixedPitch false def
|
||||
/UnderlinePosition -175 def
|
||||
/UnderlineThickness 90 def
|
||||
/ascent 1556 def
|
||||
end readonly def
|
||||
/Encoding 256 array
|
||||
0 1 255 { 1 index exch /.notdef put} for
|
||||
dup 13/uni000D put
|
||||
dup 32/space put
|
||||
readonly def
|
||||
currentdict end
|
||||
currentfile eexec
|
||||
743F8413F3636CA85A9FFEFB50B4BB27302A5F6C876586CCC1670A7EF5521E6ADE15AAB4
|
||||
DD2DDDB83735311FC63DB80D2C96AECFA05BB67F865EA35934B4B79A203A8DD489B09C79
|
||||
FF6EB9DBCFD889C3E73F8C94BC342AF671D6F688870A62EE1A0DF216E150FFEC64A8C2B7
|
||||
509AD05C011599C1AD84E6C4B668E07EA219BD72663D8AF4CA8EC8E23AA90DE90BE940C6
|
||||
6DB849CEDB3B64961365A7CCE47F4FC9E30FDEE4B14B90C2E0D8C344EBC974EABF417B3D
|
||||
28251A78ACEE2BFC4212B1E3E9C7EBC3262821EE98E538713C64DF0BC13C19337B1307DE
|
||||
427F2C8C4FF2126B9FF99DDDFB332AF3EBCD23349171C5C7E66B1C53EF39C35516C0DC7D
|
||||
D6F70D59C28603519559B710C0128C22BA268D330AE02690534939E5B58BAAB00A59B0E6
|
||||
E515E80A04F2B315A00FB1CA49A4B0259167BBA9852544092955FE0883DBCD89B739AA94
|
||||
8C6277B54019E9870B44E5A998F0F2175545F602CC4630E4BE01E35F4CEFDD7D1B737358
|
||||
1B2D6F612B23AFAF221AB18CD868E7548EE5064762971F8868940F26134CA7BB40734220
|
||||
06EEBE10B5F5251FE36B0E794D8B0D7AC814F4C30BB5A0435C203748B40217BEAF506328
|
||||
D30E9417382B228FF6DF97A71135B613CC3EF4CDD8276711842C3DB0D31A25883544FFF5
|
||||
D8719874AD10816F3EB272D5C245440127B9F2967DC46EAF4BED77FF2C2585A355EB586E
|
||||
09BE8BA3D104EA174EA004DCE00066F7606EEF55376E332566235B8F4283D63E2AE5F2E3
|
||||
6A6940BED4FA83C6E82C444B2D790BAA36E641908C61F6409CA09D9723B2F169BE42B166
|
||||
5E704AA69D594B2A22C631D030029B772C3C200A0A483A13403E2EF19274B73860FFEA37
|
||||
521C65865A79A5429EED01C0F95AB6F66F030BF14CCB42A6DA2435B74135BB5D35EF6DC6
|
||||
FE48D29690417795B9D7AA2A3D66B7A175F8B6C23AFB5A472343C2DFDCC242C27033DD6F
|
||||
B65B1CD5DC29B9DA455FAAC3A9408BB9B61C2B701741C34CE88EBFF05B7045CBEAC8788E
|
||||
548F0E642277D4F9AED30A3431070805910970243FD069130D641AFAE28754B1355618B8
|
||||
706D163027980F2A76A59E0B9D2FB92BF17943129A8A6FB15CBF6D376C464329E24A118B
|
||||
8E38987CDD4CD5F214B26D65BEEDB2ECD7502861747089298A653654062A3AD5AC4FC4AF
|
||||
5DEF7BDD4C5CDBC828A1F12235F68522B45BE0C2D6FB663B51E76BF559815F41C25EC7F8
|
||||
17A92B9E139F3E6D27A8512A261EE576459DE603F386516E46B8326574E900101A8D49C9
|
||||
E8798E734F56C4E2D78B14D6B14E96F3523F3F34464235C96F94609852F90A0A1B51CE14
|
||||
25EC76E65E5D1C5D2EEC730FC438F4083A806C67D0A1566D0E6EF70DC38E64DCA44DFA66
|
||||
20073E848BDFDB2B793AFE29B47917D87CB8320F48A7C083CAAD2CA20C25D705D78B33D5
|
||||
A5EAB8C671A57BBC3C896DE54C71B8F860B640B7C30199A2443353E3727FA99C168DB4E8
|
||||
ABE021B7DDB526E30B2075028BD8D387D32E025E458D05E3A25B9BC94ED54F7A0FCA3D61
|
||||
604D2F49A205CBDF5FBDD5D3E1D31C6F7310CC155982689FA1F5723DDAE2EDEB5E69F03C
|
||||
4CCDBBCB348E57AF222744A07DCCE69236EB29499A87C0A201EDD6A402EA23C035732184
|
||||
339049E8C101388304CD20EAA8554A9B6E4F2B126A0593F4401992E73F7BFEF89DE3DFDE
|
||||
DA548E3EE05D5B4EE0D114F916
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
cleartomark
|
72
_testdata/R/import.Rd
Normal file
72
_testdata/R/import.Rd
Normal file
@@ -0,0 +1,72 @@
|
||||
% Generated by roxygen2: do not edit by hand
|
||||
% Please edit documentation in R/hello.R
|
||||
\name{import}
|
||||
\alias{import}
|
||||
\title{Import a module into the current scope}
|
||||
\usage{
|
||||
import(module, attach, attach_operators = TRUE)
|
||||
}
|
||||
\arguments{
|
||||
\item{module}{an identifier specifying the full module path}
|
||||
|
||||
\item{attach}{if \code{TRUE}, attach the newly loaded module to the object
|
||||
search path (see \code{Details})}
|
||||
|
||||
\item{attach_operators}{if \code{TRUE}, attach operators of module to the
|
||||
object search path, even if \code{attach} is \code{FALSE}}
|
||||
}
|
||||
\value{
|
||||
the loaded module environment (invisible)
|
||||
}
|
||||
\description{
|
||||
\code{module = import('module')} imports a specified module and makes its
|
||||
code available via the environment-like object it returns.
|
||||
}
|
||||
\details{
|
||||
Modules are loaded in an isolated environment which is returned, and
|
||||
optionally attached to the object search path of the current scope (if
|
||||
argument \code{attach} is \code{TRUE}).
|
||||
\code{attach} defaults to \code{FALSE}. However, in interactive code it is
|
||||
often helpful to attach packages by default. Therefore, in interactive code
|
||||
invoked directly from the terminal only (i.e. not within modules),
|
||||
\code{attach} defaults to the value of \code{options('import.attach')}, which
|
||||
can be set to \code{TRUE} or \code{FALSE} depending on the user’s preference.
|
||||
|
||||
\code{attach_operators} causes \emph{operators} to be attached by default,
|
||||
because operators can only be invoked in R if they re found in the search
|
||||
path. Not attaching them therefore drastically limits a module’s usefulness.
|
||||
|
||||
Modules are searched in the module search path \code{options('import.path')}.
|
||||
This is a vector of paths to consider, from the highest to the lowest
|
||||
priority. The current directory is \emph{always} considered first. That is,
|
||||
if a file \code{a.r} exists both in the current directory and in a module
|
||||
search path, the local file \code{./a.r} will be loaded.
|
||||
|
||||
Module names can be fully qualified to refer to nested paths. See
|
||||
\code{Examples}.
|
||||
}
|
||||
\note{
|
||||
Unlike for packages, attaching happens \emph{locally}: if
|
||||
\code{import} is executed in the global environment, the effect is the same.
|
||||
Otherwise, the imported module is inserted as the parent of the current
|
||||
\code{environment()}. When used (globally) \emph{inside} a module, the newly
|
||||
imported module is only available inside the module’s search path, not
|
||||
outside it (nor in other modules which might be loaded).
|
||||
}
|
||||
\examples{
|
||||
# `a.r` is a file in the local directory containing a function `f`.
|
||||
a = import('a')
|
||||
a$f()
|
||||
|
||||
# b/c.r is a file in path `b`, containing a function `g`.
|
||||
import('b/c', attach = TRUE)
|
||||
g() # No module name qualification necessary
|
||||
|
||||
}
|
||||
\seealso{
|
||||
\code{unload}
|
||||
|
||||
\code{reload}
|
||||
|
||||
\code{module_name}
|
||||
}
|
Reference in New Issue
Block a user