Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/vbnet@6046 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61pull/1/head
20 changed files with 29 additions and 709 deletions
@ -1,161 +0,0 @@
@@ -1,161 +0,0 @@
|
||||
/*---------------------------------------------------------------------- |
||||
Compiler Generator Coco/R, |
||||
Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz |
||||
extended by M. Loeberbauer & A. Woess, Univ. of Linz |
||||
with improvements by Pat Terry, Rhodes University |
||||
|
||||
This program is free software; you can redistribute it and/or modify it |
||||
under the terms of the GNU General Public License as published by the |
||||
Free Software Foundation; either version 2, or (at your option) any |
||||
later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, but |
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License along |
||||
with this program; if not, write to the Free Software Foundation, Inc., |
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
||||
|
||||
As an exception, it is allowed to write an extension of Coco/R that is |
||||
used as a plugin in non-free software. |
||||
|
||||
If not otherwise stated, any source code generated by Coco/R (other than |
||||
Coco/R itself) does not fall under the GNU General Public License. |
||||
----------------------------------------------------------------------*/ |
||||
-->begin |
||||
using System; |
||||
|
||||
-->namespace |
||||
|
||||
public partial class ExpressionFinder { |
||||
-->constants |
||||
const bool T = true; |
||||
const bool x = false; |
||||
const int minErrDist = 2; |
||||
|
||||
public ILexer lexer; |
||||
public Errors errors; |
||||
|
||||
public ExpressionFinder(ILexer lexer) |
||||
{ |
||||
this.lexer = lexer; |
||||
this.errors = new Errors(); |
||||
} |
||||
|
||||
public Token t; // last recognized token |
||||
public Token la; // lookahead token |
||||
int errDist = minErrDist; |
||||
|
||||
-->declarations |
||||
|
||||
void SynErr (int n) { |
||||
if (errDist >= minErrDist) errors.SynErr(la.line, la.col, n); |
||||
errDist = 0; |
||||
} |
||||
|
||||
public void SemErr (string msg) { |
||||
if (errDist >= minErrDist) errors.SemErr(t.line, t.col, msg); |
||||
errDist = 0; |
||||
} |
||||
|
||||
void Get () { |
||||
for (;;) { |
||||
t = la; |
||||
la = lexer.NextToken(); |
||||
if (la.kind <= maxT) { ++errDist; break; } |
||||
-->pragmas |
||||
la = t; |
||||
} |
||||
} |
||||
|
||||
void Expect (int n) { |
||||
if (la.kind==n) Get(); else { SynErr(n); } |
||||
} |
||||
|
||||
bool StartOf (int s) { |
||||
return set[s, la.kind]; |
||||
} |
||||
|
||||
void ExpectWeak (int n, int follow) { |
||||
if (la.kind == n) Get(); |
||||
else { |
||||
SynErr(n); |
||||
while (!StartOf(follow)) Get(); |
||||
} |
||||
} |
||||
|
||||
|
||||
bool WeakSeparator(int n, int syFol, int repFol) { |
||||
int kind = la.kind; |
||||
if (kind == n) {Get(); return true;} |
||||
else if (StartOf(repFol)) {return false;} |
||||
else { |
||||
SynErr(n); |
||||
while (!(set[syFol, kind] || set[repFol, kind] || set[0, kind])) { |
||||
Get(); |
||||
kind = la.kind; |
||||
} |
||||
return StartOf(syFol); |
||||
} |
||||
} |
||||
|
||||
|
||||
-->productions |
||||
|
||||
public void Parse() { |
||||
PushContext(Context.Global); |
||||
la = new Token(1, 1, 1); |
||||
Get(); |
||||
-->parseRoot |
||||
Expect(0); |
||||
PopContext(); |
||||
} |
||||
|
||||
static readonly bool[,] set = { |
||||
-->initialization |
||||
}; |
||||
} // end Parser |
||||
|
||||
|
||||
public class Errors { |
||||
public int count = 0; // number of errors detected |
||||
public System.IO.TextWriter errorStream = Console.Out; // error messages go to this stream |
||||
public string errMsgFormat = "-- line {0} col {1}: {2}"; // 0=line, 1=column, 2=text |
||||
|
||||
public void SynErr (int line, int col, int n) { |
||||
string s; |
||||
switch (n) { |
||||
-->errors |
||||
default: s = "error " + n; break; |
||||
} |
||||
errorStream.WriteLine(errMsgFormat, line, col, s); |
||||
count++; |
||||
} |
||||
|
||||
public void SemErr (int line, int col, string s) { |
||||
errorStream.WriteLine(errMsgFormat, line, col, s); |
||||
count++; |
||||
} |
||||
|
||||
public void SemErr (string s) { |
||||
errorStream.WriteLine(s); |
||||
count++; |
||||
} |
||||
|
||||
public void Warning (int line, int col, string s) { |
||||
errorStream.WriteLine(errMsgFormat, line, col, s); |
||||
} |
||||
|
||||
public void Warning(string s) { |
||||
errorStream.WriteLine(s); |
||||
} |
||||
} // Errors |
||||
|
||||
|
||||
public class FatalError: Exception { |
||||
public FatalError(string m): base(m) {} |
||||
} |
||||
|
||||
$$$ |
||||
@ -1,363 +0,0 @@
@@ -1,363 +0,0 @@
|
||||
/*---------------------------------------------------------------------- |
||||
Compiler Generator Coco/R, |
||||
Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz |
||||
extended by M. Loeberbauer & A. Woess, Univ. of Linz |
||||
with improvements by Pat Terry, Rhodes University |
||||
|
||||
This program is free software; you can redistribute it and/or modify it |
||||
under the terms of the GNU General Public License as published by the |
||||
Free Software Foundation; either version 2, or (at your option) any |
||||
later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, but |
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
||||
for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License along |
||||
with this program; if not, write to the Free Software Foundation, Inc., |
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
||||
|
||||
As an exception, it is allowed to write an extension of Coco/R that is |
||||
used as a plugin in non-free software. |
||||
|
||||
If not otherwise stated, any source code generated by Coco/R (other than |
||||
Coco/R itself) does not fall under the GNU General Public License. |
||||
-----------------------------------------------------------------------*/ |
||||
-->begin |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
|
||||
-->namespace |
||||
|
||||
public class Token { |
||||
public int kind; // token kind |
||||
public int pos; // token position in the source text (starting at 0) |
||||
public int col; // token column (starting at 1) |
||||
public int line; // token line (starting at 1) |
||||
public string val; // token value |
||||
public Token next; // ML 2005-03-11 Tokens are kept in linked list |
||||
} |
||||
|
||||
//----------------------------------------------------------------------------------- |
||||
// Buffer |
||||
//----------------------------------------------------------------------------------- |
||||
public class Buffer { |
||||
// This Buffer supports the following cases: |
||||
// 1) seekable stream (file) |
||||
// a) whole stream in buffer |
||||
// b) part of stream in buffer |
||||
// 2) non seekable stream (network, console) |
||||
|
||||
public const int EOF = char.MaxValue + 1; |
||||
const int MIN_BUFFER_LENGTH = 1024; // 1KB |
||||
const int MAX_BUFFER_LENGTH = MIN_BUFFER_LENGTH * 64; // 64KB |
||||
byte[] buf; // input buffer |
||||
int bufStart; // position of first byte in buffer relative to input stream |
||||
int bufLen; // length of buffer |
||||
int fileLen; // length of input stream (may change if the stream is no file) |
||||
int bufPos; // current position in buffer |
||||
Stream stream; // input stream (seekable) |
||||
bool isUserStream; // was the stream opened by the user? |
||||
|
||||
public Buffer (Stream s, bool isUserStream) { |
||||
stream = s; this.isUserStream = isUserStream; |
||||
|
||||
if (stream.CanSeek) { |
||||
fileLen = (int) stream.Length; |
||||
bufLen = Math.Min(fileLen, MAX_BUFFER_LENGTH); |
||||
bufStart = Int32.MaxValue; // nothing in the buffer so far |
||||
} else { |
||||
fileLen = bufLen = bufStart = 0; |
||||
} |
||||
|
||||
buf = new byte[(bufLen>0) ? bufLen : MIN_BUFFER_LENGTH]; |
||||
if (fileLen > 0) Pos = 0; // setup buffer to position 0 (start) |
||||
else bufPos = 0; // index 0 is already after the file, thus Pos = 0 is invalid |
||||
if (bufLen == fileLen && stream.CanSeek) Close(); |
||||
} |
||||
|
||||
protected Buffer(Buffer b) { // called in UTF8Buffer constructor |
||||
buf = b.buf; |
||||
bufStart = b.bufStart; |
||||
bufLen = b.bufLen; |
||||
fileLen = b.fileLen; |
||||
bufPos = b.bufPos; |
||||
stream = b.stream; |
||||
// keep destructor from closing the stream |
||||
b.stream = null; |
||||
isUserStream = b.isUserStream; |
||||
} |
||||
|
||||
~Buffer() { Close(); } |
||||
|
||||
protected void Close() { |
||||
if (!isUserStream && stream != null) { |
||||
stream.Close(); |
||||
stream = null; |
||||
} |
||||
} |
||||
|
||||
public virtual int Read () { |
||||
if (bufPos < bufLen) { |
||||
return buf[bufPos++]; |
||||
} else if (Pos < fileLen) { |
||||
Pos = Pos; // shift buffer start to Pos |
||||
return buf[bufPos++]; |
||||
} else if (stream != null && !stream.CanSeek && ReadNextStreamChunk() > 0) { |
||||
return buf[bufPos++]; |
||||
} else { |
||||
return EOF; |
||||
} |
||||
} |
||||
|
||||
public int Peek () { |
||||
int curPos = Pos; |
||||
int ch = Read(); |
||||
Pos = curPos; |
||||
return ch; |
||||
} |
||||
|
||||
public string GetString (int beg, int end) { |
||||
int len = 0; |
||||
char[] buf = new char[end - beg]; |
||||
int oldPos = Pos; |
||||
Pos = beg; |
||||
while (Pos < end) buf[len++] = (char) Read(); |
||||
Pos = oldPos; |
||||
return new String(buf, 0, len); |
||||
} |
||||
|
||||
public int Pos { |
||||
get { return bufPos + bufStart; } |
||||
set { |
||||
if (value >= fileLen && stream != null && !stream.CanSeek) { |
||||
// Wanted position is after buffer and the stream |
||||
// is not seek-able e.g. network or console, |
||||
// thus we have to read the stream manually till |
||||
// the wanted position is in sight. |
||||
while (value >= fileLen && ReadNextStreamChunk() > 0); |
||||
} |
||||
|
||||
if (value < 0 || value > fileLen) { |
||||
throw new FatalError("buffer out of bounds access, position: " + value); |
||||
} |
||||
|
||||
if (value >= bufStart && value < bufStart + bufLen) { // already in buffer |
||||
bufPos = value - bufStart; |
||||
} else if (stream != null) { // must be swapped in |
||||
stream.Seek(value, SeekOrigin.Begin); |
||||
bufLen = stream.Read(buf, 0, buf.Length); |
||||
bufStart = value; bufPos = 0; |
||||
} else { |
||||
// set the position to the end of the file, Pos will return fileLen. |
||||
bufPos = fileLen - bufStart; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Read the next chunk of bytes from the stream, increases the buffer |
||||
// if needed and updates the fields fileLen and bufLen. |
||||
// Returns the number of bytes read. |
||||
private int ReadNextStreamChunk() { |
||||
int free = buf.Length - bufLen; |
||||
if (free == 0) { |
||||
// in the case of a growing input stream |
||||
// we can neither seek in the stream, nor can we |
||||
// foresee the maximum length, thus we must adapt |
||||
// the buffer size on demand. |
||||
byte[] newBuf = new byte[bufLen * 2]; |
||||
Array.Copy(buf, newBuf, bufLen); |
||||
buf = newBuf; |
||||
free = bufLen; |
||||
} |
||||
int read = stream.Read(buf, bufLen, free); |
||||
if (read > 0) { |
||||
fileLen = bufLen = (bufLen + read); |
||||
return read; |
||||
} |
||||
// end of stream reached |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
//----------------------------------------------------------------------------------- |
||||
// UTF8Buffer |
||||
//----------------------------------------------------------------------------------- |
||||
public class UTF8Buffer: Buffer { |
||||
public UTF8Buffer(Buffer b): base(b) {} |
||||
|
||||
public override int Read() { |
||||
int ch; |
||||
do { |
||||
ch = base.Read(); |
||||
// until we find a utf8 start (0xxxxxxx or 11xxxxxx) |
||||
} while ((ch >= 128) && ((ch & 0xC0) != 0xC0) && (ch != EOF)); |
||||
if (ch < 128 || ch == EOF) { |
||||
// nothing to do, first 127 chars are the same in ascii and utf8 |
||||
// 0xxxxxxx or end of file character |
||||
} else if ((ch & 0xF0) == 0xF0) { |
||||
// 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
||||
int c1 = ch & 0x07; ch = base.Read(); |
||||
int c2 = ch & 0x3F; ch = base.Read(); |
||||
int c3 = ch & 0x3F; ch = base.Read(); |
||||
int c4 = ch & 0x3F; |
||||
ch = (((((c1 << 6) | c2) << 6) | c3) << 6) | c4; |
||||
} else if ((ch & 0xE0) == 0xE0) { |
||||
// 1110xxxx 10xxxxxx 10xxxxxx |
||||
int c1 = ch & 0x0F; ch = base.Read(); |
||||
int c2 = ch & 0x3F; ch = base.Read(); |
||||
int c3 = ch & 0x3F; |
||||
ch = (((c1 << 6) | c2) << 6) | c3; |
||||
} else if ((ch & 0xC0) == 0xC0) { |
||||
// 110xxxxx 10xxxxxx |
||||
int c1 = ch & 0x1F; ch = base.Read(); |
||||
int c2 = ch & 0x3F; |
||||
ch = (c1 << 6) | c2; |
||||
} |
||||
return ch; |
||||
} |
||||
} |
||||
|
||||
//----------------------------------------------------------------------------------- |
||||
// Scanner |
||||
//----------------------------------------------------------------------------------- |
||||
public class Scanner { |
||||
const char EOL = '\n'; |
||||
const int eofSym = 0; /* pdt */ |
||||
-->declarations |
||||
|
||||
public Buffer buffer; // scanner buffer |
||||
|
||||
Token t; // current token |
||||
int ch; // current input character |
||||
int pos; // byte position of current character |
||||
int col; // column number of current character |
||||
int line; // line number of current character |
||||
int oldEols; // EOLs that appeared in a comment; |
||||
static readonly Dictionary<int, int> start; // maps first token character to start state |
||||
|
||||
Token tokens; // list of tokens already peeked (first token is a dummy) |
||||
Token pt; // current peek token |
||||
|
||||
char[] tval = new char[128]; // text of current token |
||||
int tlen; // length of current token |
||||
|
||||
static Scanner() { |
||||
start = new Dictionary<int, int>(128); |
||||
-->initialization |
||||
} |
||||
|
||||
public Scanner (string fileName) { |
||||
try { |
||||
Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); |
||||
buffer = new Buffer(stream, false); |
||||
Init(); |
||||
} catch (IOException) { |
||||
throw new FatalError("Cannot open file " + fileName); |
||||
} |
||||
} |
||||
|
||||
public Scanner (Stream s) { |
||||
buffer = new Buffer(s, true); |
||||
Init(); |
||||
} |
||||
|
||||
void Init() { |
||||
pos = -1; line = 1; col = 0; |
||||
oldEols = 0; |
||||
NextCh(); |
||||
if (ch == 0xEF) { // check optional byte order mark for UTF-8 |
||||
NextCh(); int ch1 = ch; |
||||
NextCh(); int ch2 = ch; |
||||
if (ch1 != 0xBB || ch2 != 0xBF) { |
||||
throw new FatalError(String.Format("illegal byte order mark: EF {0,2:X} {1,2:X}", ch1, ch2)); |
||||
} |
||||
buffer = new UTF8Buffer(buffer); col = 0; |
||||
NextCh(); |
||||
} |
||||
pt = tokens = new Token(); // first token is a dummy |
||||
} |
||||
|
||||
void NextCh() { |
||||
if (oldEols > 0) { ch = EOL; oldEols--; } |
||||
else { |
||||
pos = buffer.Pos; |
||||
ch = buffer.Read(); col++; |
||||
// replace isolated '\r' by '\n' in order to make |
||||
// eol handling uniform across Windows, Unix and Mac |
||||
if (ch == '\r' && buffer.Peek() != '\n') ch = EOL; |
||||
if (ch == EOL) { line++; col = 0; } |
||||
} |
||||
-->casing1 |
||||
} |
||||
|
||||
void AddCh() { |
||||
if (tlen >= tval.Length) { |
||||
char[] newBuf = new char[2 * tval.Length]; |
||||
Array.Copy(tval, 0, newBuf, 0, tval.Length); |
||||
tval = newBuf; |
||||
} |
||||
if (ch != Buffer.EOF) { |
||||
-->casing2 |
||||
NextCh(); |
||||
} |
||||
} |
||||
|
||||
|
||||
-->comments |
||||
|
||||
void CheckLiteral() { |
||||
-->literals |
||||
} |
||||
|
||||
Token NextToken() { |
||||
while (ch == ' ' || |
||||
-->scan1 |
||||
) NextCh(); |
||||
-->scan2 |
||||
t = new Token(); |
||||
t.pos = pos; t.col = col; t.line = line; |
||||
int state; |
||||
if (!start.TryGetValue(ch, out state)) |
||||
state = 0; |
||||
tlen = 0; AddCh(); |
||||
|
||||
switch (state) { |
||||
case -1: { t.kind = eofSym; break; } // NextCh already done |
||||
case 0: { t.kind = noSym; break; } // NextCh already done |
||||
-->scan3 |
||||
} |
||||
t.val = new String(tval, 0, tlen); |
||||
return t; |
||||
} |
||||
|
||||
// get the next token (possibly a token already seen during peeking) |
||||
public Token Scan () { |
||||
if (tokens.next == null) { |
||||
return NextToken(); |
||||
} else { |
||||
pt = tokens = tokens.next; |
||||
return tokens; |
||||
} |
||||
} |
||||
|
||||
// peek for the next token, ignore pragmas |
||||
public Token Peek () { |
||||
do { |
||||
if (pt.next == null) { |
||||
pt.next = NextToken(); |
||||
} |
||||
pt = pt.next; |
||||
} while (pt.kind > maxT); // skip pragmas |
||||
|
||||
return pt; |
||||
} |
||||
|
||||
// make sure that peeking starts at the current scan position |
||||
public void ResetPeek () { pt = tokens; } |
||||
|
||||
} // end Scanner |
||||
|
||||
$$$ |
||||
@ -1,40 +0,0 @@
@@ -1,40 +0,0 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Siegfried Pammer" email="siegfriedpammer@gmail.com" />
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.IO; |
||||
using ICSharpCode.NRefactory; |
||||
using ICSharpCode.NRefactory.Parser; |
||||
using VB = ICSharpCode.NRefactory.Parser.VB; |
||||
using ICSharpCode.NRefactory.Parser.VBNet.Experimental; |
||||
|
||||
namespace VBParserExperiment |
||||
{ |
||||
class Program |
||||
{ |
||||
static string data = @"Class Test
|
||||
Public Sub New() |
||||
Dim x = <a> |
||||
End Sub |
||||
End Class |
||||
";
|
||||
|
||||
public static void Main(string[] args) |
||||
{ |
||||
ILexer lexer = ParserFactory.CreateLexer(SupportedLanguage.VBNet, new StringReader(data)); |
||||
ExpressionFinder p = new ExpressionFinder(); |
||||
|
||||
Token t; |
||||
do { |
||||
t = lexer.NextToken(); |
||||
p.InformToken(t); |
||||
} while (t.Kind != VB.Tokens.EOF); |
||||
|
||||
Console.ReadKey(true); |
||||
} |
||||
} |
||||
} |
||||
@ -1,31 +0,0 @@
@@ -1,31 +0,0 @@
|
||||
#region Using directives
|
||||
|
||||
using System; |
||||
using System.Reflection; |
||||
using System.Runtime.InteropServices; |
||||
|
||||
#endregion
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("VBParserExperiment")] |
||||
[assembly: AssemblyDescription("")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("")] |
||||
[assembly: AssemblyProduct("VBParserExperiment")] |
||||
[assembly: AssemblyCopyright("Copyright 2010")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// This sets the default COM visibility of types in the assembly to invisible.
|
||||
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||
[assembly: ComVisible(false)] |
||||
|
||||
// The assembly version has following format :
|
||||
//
|
||||
// Major.Minor.Build.Revision
|
||||
//
|
||||
// You can specify all the values or you can use the default the Revision and
|
||||
// Build Numbers by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.*")] |
||||
@ -1,65 +0,0 @@
@@ -1,65 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> |
||||
<PropertyGroup> |
||||
<ProjectGuid>{A21BF46E-27BC-4DCA-AB11-462BE5B0B028}</ProjectGuid> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform> |
||||
<OutputType>Exe</OutputType> |
||||
<RootNamespace>VBParserExperiment</RootNamespace> |
||||
<AssemblyName>VBParserExperiment</AssemblyName> |
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||
<AppDesignerFolder>Properties</AppDesignerFolder> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Platform)' == 'x86' "> |
||||
<PlatformTarget>x86</PlatformTarget> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||
<OutputPath>bin\Debug\</OutputPath> |
||||
<DebugSymbols>True</DebugSymbols> |
||||
<DebugType>Full</DebugType> |
||||
<Optimize>False</Optimize> |
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||
<OutputPath>bin\Release\</OutputPath> |
||||
<DebugSymbols>False</DebugSymbols> |
||||
<DebugType>None</DebugType> |
||||
<Optimize>True</Optimize> |
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||
<DefineConstants>TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<Reference Include="nunit.framework"> |
||||
<HintPath>..\..\..\..\..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath> |
||||
</Reference> |
||||
<Reference Include="System" /> |
||||
<Reference Include="System.Core"> |
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||
</Reference> |
||||
<Reference Include="System.Data" /> |
||||
<Reference Include="System.Data.DataSetExtensions"> |
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||
</Reference> |
||||
<Reference Include="System.Xml" /> |
||||
<Reference Include="System.Xml.Linq"> |
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||
</Reference> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Compile Include="ImplicitLineContinuationTests.cs" /> |
||||
<Compile Include="LATextReaderTests.cs" /> |
||||
<Compile Include="ParserTests.cs" /> |
||||
<Compile Include="Program.cs" /> |
||||
<Compile Include="Properties\AssemblyInfo.cs" /> |
||||
<Compile Include="TokenTests.cs" /> |
||||
<Compile Include="XmlModeLexerTests.cs" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ProjectReference Include="..\..\..\..\..\NRefactory.csproj"> |
||||
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project> |
||||
<Name>NRefactory</Name> |
||||
</ProjectReference> |
||||
</ItemGroup> |
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||
</Project> |
||||
Loading…
Reference in new issue