View gist:80341baa5da6b2256fc9
syntax Node = Key=Reference sm NodeContent; | |
syntax NodeContent = "{" outline_begin_before inl NodeMembers nl d outline_end "}"; | |
syntax NodeMember | |
{ | |
| Attribute = Key=Reference sm ":" sm Value | |
| Node = Node | |
} | |
syntax Value | |
{ |
View gist:1f4ff69dfd96f36e4fbcf8ebf50c87bb
using System.Console; | |
struct S | |
{ | |
public mutable X : int; | |
public mutable Y : int; | |
} | |
module Program | |
{ |
View gist:8cf390d3417b887ceab5216981feb3e4
using System.Console; | |
using Nemerle.Imperative.GoTo; // It need for 'goto' and 'label' macros. | |
struct S | |
{ | |
public mutable X : int; | |
public mutable Y : int; | |
} | |
module Program |
View gist:d1a33cc182ef85ee9cfa0774cd0539c3
using System; | |
using System.Collections.Generic; | |
using System.Data; | |
using System.Data.Entity; | |
using System.Linq; | |
using System.Net; | |
using System.Web; | |
using System.Web.Mvc; | |
using BlackHoles.DataContexts; | |
using BlackHoles.Entities; |
View TODO:QualifiedReference.Aliased
Надо реализовать QualifiedReference.Aliased (сейчас там заглушечный код). | |
Нужно создать список глобальных псевдонимов. | |
Псевдонимы должны задаваться из свойств проекта или командной строки компилятора. | |
Каждый псевдоним может быть ассоциирован с одним деревом символов одной или более библиотеки (сборки). | |
Scope псевдонима должен содержать список корней деревьев символов для каждой сборки. | |
Предопределенный псевдоним global должен быть ассоциирован с корнем дерева символов проекта. | |
Для того чтобы сделать это, предварительно, нужно сделать отдельные иерархии символов для каждого проекта/сборки. | |
А дерево символов каждого проекта надо сделать сборным из деревьев подключенных к нему проектов/сборок. |
View gist:369758b8caa35f29f5dddd193ef683c3
------ Build started: Project: DotNetLang, Configuration: Debug Any CPU ------ | |
"C:\!\Nitra\.nuget\NuGet.exe" install "C:\!\Nitra\Nitra\DotNetLang\packages.config" -source "" -NonInteractive -RequireConsent -solutionDir "C:\!\Nitra\ " | |
Restoring NuGet packages... | |
To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'. | |
All packages listed in packages.config are already installed. | |
C:\Program Files (x86)\Nemerle\\Net-4.0\ncc.exe | |
/no-color | |
/no-stdlib | |
/greedy-references:- | |
/define:TRACE;DEBUG_EVAL_DEPENDENT_PROPERTIES;DEBUG |
View gist:e7f25b72b33cd216e1b5b8dc59b634ab
// Nitra.Ast.TopAst | |
public override void EvalProperties(DependentPropertyEvalContext context) | |
{ | |
if ((this._N_bitField_51532 & 32) == 0) | |
{ | |
if (context.Stage >= 1) | |
{ | |
if (this.IsOpeningInEvaluated) | |
{ | |
this.OpeningOut = this.OpeningIn; |
View infer-from-usage.n
using System.Console; | |
using System.Collections.Generic; | |
def dic = Dictionary(); | |
dic.Add("aaa", 123); | |
WriteLine(dic["aaa"]); | |
WriteLine(dic[42]); // error: dic has Dictionary[string, int] type |
View PM-by-classes.n
using System.Console; | |
[Record] class A { public Foo : B { get; } } | |
[Record] class B { public Bar : int { get; } } | |
module Program | |
{ | |
Main() : void | |
{ | |
def obj1 : object = A(B(42)); |
View ысщзуыют
namespace A // создает локальный символ простанства имен для текущей ДЛЛ | |
{ | |
module B // создает локальный символ модуля для текущей ДЛЛ | |
{ | |
Main() : void // создает локальный символ метода для текущей ДЛЛ | |
{ | |
// порождает АСТ в котором возможен биндинг | |
Foo(); // вызов Foo из нэйспэйса A объявленного в другой сборке. | |
} | |
} |