<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://pascalabc.net/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4</id>
	<title>Грамматика Pascal + Код - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://pascalabc.net/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4"/>
	<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;action=history"/>
	<updated>2026-04-19T00:44:40Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2191&amp;oldid=prev</id>
		<title>Extremall в 19:12, 28 сентября 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2191&amp;oldid=prev"/>
		<updated>2011-09-28T19:12:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 22:12, 28 сентября 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--[[Участник:Extremall|Extremall]] 19:12, 28 сентября 2011 (UTC)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;%{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;%{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Extremall</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2190&amp;oldid=prev</id>
		<title>Extremall в 19:12, 28 сентября 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2190&amp;oldid=prev"/>
		<updated>2011-09-28T19:12:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 22:12, 28 сентября 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--[[Участник:Extremall|Extremall]] 19:12, 28 сентября 2011 (UTC)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;%{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;%{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Extremall</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2189&amp;oldid=prev</id>
		<title>Extremall: Новая: &lt;source lang=&quot;&quot;&gt;%{     Dictionary&lt;string,double&gt; vars = new Dictionary&lt;string,double&gt;(); %} %union {  	 public int iVal;  	 public double dVal;           public string sVal;           pu...</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_Pascal_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2189&amp;oldid=prev"/>
		<updated>2011-09-28T19:11:56Z</updated>

		<summary type="html">&lt;p&gt;Новая: &amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;%{     Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;(); %} %union {  	 public int iVal;  	 public double dVal;           public string sVal;           pu...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;%{&lt;br /&gt;
    Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;br /&gt;
%}&lt;br /&gt;
%union { &lt;br /&gt;
	 public int iVal; &lt;br /&gt;
	 public double dVal; &lt;br /&gt;
         public string sVal; &lt;br /&gt;
         public ExprNode eVal;&lt;br /&gt;
         public List&amp;lt;ExprNode&amp;gt; elVal;&lt;br /&gt;
         public TreeNode tVal;&lt;br /&gt;
         public BlockNode lVal;&lt;br /&gt;
         public List&amp;lt;string&amp;gt; lsVal;&lt;br /&gt;
	 public GreatType dtVal;&lt;br /&gt;
       }&lt;br /&gt;
%output=PascalYacc.cs &lt;br /&gt;
%using System.IO&lt;br /&gt;
%using Syntax_node_tree&lt;br /&gt;
%namespace LexScanner&lt;br /&gt;
%start progr&lt;br /&gt;
&lt;br /&gt;
%token kBEGIN kEND kIF kTHEN kELSE kWHILE kDO kVAR&lt;br /&gt;
%token ASSIGN SEMICOLUMN LPAREN RPAREN COLUMN COLON POINT  &lt;br /&gt;
%token PLUS MINUS MULT DIVIDE &lt;br /&gt;
%token AND OR NOT LT GT EQ NE LE GE DIV MOD&lt;br /&gt;
%token &amp;lt;iVal&amp;gt; INTNUM &lt;br /&gt;
%token &amp;lt;dVal&amp;gt; REALNUM &lt;br /&gt;
%token &amp;lt;sVal&amp;gt; STRINGLITERAL&lt;br /&gt;
%token &amp;lt;sVal&amp;gt; ID&lt;br /&gt;
%token &amp;lt;dtVal&amp;gt; kREAL kINTEGER &lt;br /&gt;
&lt;br /&gt;
%type &amp;lt;eVal&amp;gt; expr&lt;br /&gt;
%type &amp;lt;tVal&amp;gt; operator elsepart&lt;br /&gt;
%type &amp;lt;lVal&amp;gt; listoperator progr &lt;br /&gt;
%type &amp;lt;lsVal&amp;gt; ident &lt;br /&gt;
%type &amp;lt;elVal&amp;gt; exprlist &lt;br /&gt;
%type &amp;lt;dtVal&amp;gt; ktype kSimpleType&lt;br /&gt;
&lt;br /&gt;
%left LT GT LE GE EQ NE&lt;br /&gt;
%left MINUS PLUS OR&lt;br /&gt;
%left MULT DIVIDE AND DIV MOD&lt;br /&gt;
%left UMINUS NOT&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
progr   : {&lt;br /&gt;
		$$ = new Program(@$);&lt;br /&gt;
	}&lt;br /&gt;
	| defss kBEGIN listoperator kEND {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
		foreach (Operator oper in $3.list)&lt;br /&gt;
			$$.list.Add(oper);&lt;br /&gt;
	}&lt;br /&gt;
	| error &lt;br /&gt;
	{ &lt;br /&gt;
		System.Console.WriteLine(&amp;quot;BAD TEXT!!!&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	} &lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
defss : defs {&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
		$$.list.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	|defss defs {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	|&lt;br /&gt;
	;&lt;br /&gt;
	&lt;br /&gt;
defs : kVAR ident COLON ktype SEMICOLUMN {&lt;br /&gt;
		TipType type;&lt;br /&gt;
		if ($4 == &amp;quot;int&amp;quot;)&lt;br /&gt;
			type = TipType.IntType;&lt;br /&gt;
		else if ($4 == &amp;quot;double&amp;quot;)&lt;br /&gt;
			type = TipType.DoubleType;&lt;br /&gt;
		else if ($4 == &amp;quot;bool&amp;quot;)&lt;br /&gt;
			type = TipType.BoolType;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			// Error: unknown type&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new VarDef(@$, $2, type);&lt;br /&gt;
	}&lt;br /&gt;
	;	&lt;br /&gt;
&lt;br /&gt;
ident: ID {&lt;br /&gt;
		if (GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: this name is already used&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = new Ident($1, @1);&lt;br /&gt;
		listVars.Add(Id);&lt;br /&gt;
		$$ = new List&amp;lt;Ident&amp;gt;();&lt;br /&gt;
		$$.Add(Id);&lt;br /&gt;
	}	&lt;br /&gt;
    |ident COLUMN ID {&lt;br /&gt;
		if (GlobalStructures.isNameExists($3))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: this name is already used&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = new Ident($3, @3);&lt;br /&gt;
		listVars.Add(Id);&lt;br /&gt;
		$1.Add(Id);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
	&lt;br /&gt;
listoperator : operator {&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
		$$.list.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	| listoperator SEMICOLUMN operator {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
    ;&lt;br /&gt;
&lt;br /&gt;
ktype : kSimpleType&lt;br /&gt;
	| error &lt;br /&gt;
	{ &lt;br /&gt;
		System.Console.WriteLine(&amp;quot;BAD GREATE TYPE&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
kSimpleType : kREAL {&lt;br /&gt;
		$$ = &amp;quot;double&amp;quot;;&lt;br /&gt;
	} &lt;br /&gt;
	| kINTEGER {&lt;br /&gt;
		$$ = &amp;quot;int&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
operator: {&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	| ID ASSIGN expr {&lt;br /&gt;
		if (!GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Undeclarated identifier&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = GlobalStructures.getIdentByName($1);&lt;br /&gt;
		$$ = new Assign(Id, $3, @3);&lt;br /&gt;
	}&lt;br /&gt;
	| kWHILE expr kDO operator {&lt;br /&gt;
		if ($2.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Условие должно иметь логический тип&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new While($2, $4, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| kIF expr kTHEN operator elsepart {&lt;br /&gt;
		if ($2.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Условие должно иметь логический тип&lt;br /&gt;
		}&lt;br /&gt;
		$$=new If($2,$4,$5,@$);&lt;br /&gt;
	}&lt;br /&gt;
	| kBEGIN listoperator kEND {&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
        ;&lt;br /&gt;
&lt;br /&gt;
elsepart: {&lt;br /&gt;
		$$ = null;&lt;br /&gt;
	}&lt;br /&gt;
	| kELSE operator {&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
exprlist : expr {&lt;br /&gt;
		// Не понятно, зачем нам нужен список выражений. Реализую, на всякий случай, в виде списка, но класса под это не создавали.&lt;br /&gt;
		$$ = new List&amp;lt;Expression&amp;gt;();&lt;br /&gt;
		$$.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	| exprlist COLUMN expr {&lt;br /&gt;
		$1.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
expr: INTNUM {&lt;br /&gt;
		int i = int.Parse($1);&lt;br /&gt;
		$$ = new IntConst(i, @1);&lt;br /&gt;
	}&lt;br /&gt;
    | REALNUM {&lt;br /&gt;
		double d = double.Parse($1);&lt;br /&gt;
		$$ = new DoubleConst(d, @1);&lt;br /&gt;
	}&lt;br /&gt;
    | STRINGLITERAL {&lt;br /&gt;
		// Нет у нас таких!!!&lt;br /&gt;
	}&lt;br /&gt;
    | ID {&lt;br /&gt;
		if (!GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Undeclarated identifier&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new Ident($1, @1);&lt;br /&gt;
	}&lt;br /&gt;
    | expr PLUS expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Plus, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr MINUS expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Minus, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr MULT expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Mult, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr DIVIDE expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Divide, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr DIV expr {&lt;br /&gt;
		// Не поддерживается!&lt;br /&gt;
	}&lt;br /&gt;
    | expr MOD expr {&lt;br /&gt;
		// Не поддерживается!&lt;br /&gt;
	}&lt;br /&gt;
    | expr AND expr {&lt;br /&gt;
		if ($1.getType() != TipType.BoolType || $2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: only for bool types&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.And, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr OR expr {&lt;br /&gt;
		if ($1.getType() != TipType.BoolType || $2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: only for bool types&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Or, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr LT expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Less, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr GT expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.More, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr LE expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.LessEqual, @$);&lt;br /&gt;
	}&lt;br /&gt;
    | expr GE expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.MoreEqual, @$);		&lt;br /&gt;
	}&lt;br /&gt;
    | expr EQ expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Equal, @$);		&lt;br /&gt;
	}&lt;br /&gt;
    | expr NE expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.NotEqual, @$);		&lt;br /&gt;
	}&lt;br /&gt;
    | NOT expr {&lt;br /&gt;
		if ($2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: type is wrong.&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new UnarExpression($2, Op.Not, @2);&lt;br /&gt;
	}&lt;br /&gt;
    | MINUS expr %prec UMINUS {&lt;br /&gt;
		if ($2.getType() != TipType.IntType &amp;amp;&amp;amp; $2.getType() != TipType.DoubleType)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: type is wrong.&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new UnarExpression($2, Op.Minus, @2);&lt;br /&gt;
	} &lt;br /&gt;
    | LPAREN expr RPAREN {&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
%%&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Extremall</name></author>
	</entry>
</feed>