<?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_C_%2B_%D0%9A%D0%BE%D0%B4</id>
	<title>Грамматика C + Код - История изменений</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_C_%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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;action=history"/>
	<updated>2026-04-19T01:06:34Z</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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2205&amp;oldid=prev</id>
		<title>Ksanderer в 11:12, 6 октября 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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2205&amp;oldid=prev"/>
		<updated>2011-10-06T11:12:12Z</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;Версия от 14:12, 6 октября 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-l307&quot;&gt;Строка 307:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 307:&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;br/&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;br/&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;C.LEX&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;C.LEX&lt;/div&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;&amp;lt;source&amp;gt;&lt;/div&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;&amp;lt;source &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;lang=&amp;quot;&amp;quot;&lt;/ins&gt;&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;%namespace LexScanner&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;%namespace LexScanner&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;%using Syntax_node_tree;&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;%using Syntax_node_tree;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ksanderer</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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2204&amp;oldid=prev</id>
		<title>Ksanderer в 11:11, 6 октября 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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2204&amp;oldid=prev"/>
		<updated>2011-10-06T11:11:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;amp;diff=2204&amp;amp;oldid=2193&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Ksanderer</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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2193&amp;oldid=prev</id>
		<title>Extremall: Новая: &lt;source lang=&quot;&quot;&gt; progr: { 		$$ = new Program(@$); 	} 	| progr OperatorSequence { 		for (int i = 0; i &lt; $2.list.Count) 			$1.list.Add($2.list[i]); 		$$ = $1; 	} 	;   Operator: def { 		$$ ...</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_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2193&amp;oldid=prev"/>
		<updated>2011-09-28T19:13:56Z</updated>

		<summary type="html">&lt;p&gt;Новая: &amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt; progr: { 		$$ = new Program(@$); 	} 	| progr OperatorSequence { 		for (int i = 0; i &amp;lt; $2.list.Count) 			$1.list.Add($2.list[i]); 		$$ = $1; 	} 	;   Operator: def { 		$$ ...&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;
progr: {&lt;br /&gt;
		$$ = new Program(@$);&lt;br /&gt;
	}&lt;br /&gt;
	| progr OperatorSequence {&lt;br /&gt;
		for (int i = 0; i &amp;lt; $2.list.Count)&lt;br /&gt;
			$1.list.Add($2.list[i]);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
 &lt;br /&gt;
Operator: def {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	| assign {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	| if {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	| while {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	| OutPut&lt;br /&gt;
	| BOperator {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
 &lt;br /&gt;
BOperator: BEGIN OperatorSequense END {&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
 &lt;br /&gt;
OperatorSequense: {&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
	}&lt;br /&gt;
	| Operatorsequense operator {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;		&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
 &lt;br /&gt;
def: ident varlist SEMICOLUMN{&lt;br /&gt;
		TipType type;&lt;br /&gt;
		if ($1 == &amp;quot;int&amp;quot;)&lt;br /&gt;
			type = TipType.IntType;&lt;br /&gt;
		else if ($1 == &amp;quot;double&amp;quot;)&lt;br /&gt;
			type = TipType.DoubleType;&lt;br /&gt;
		else if ($1 == &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;
varlist: ident {&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;
	| varlist COMMA ident{&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;
assgin: ident ASS expr SEMICOLUMN {&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;
	;&lt;br /&gt;
 &lt;br /&gt;
expr 	&lt;br /&gt;
	: ident {&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;
	| 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;
	| TRUE {&lt;br /&gt;
		$$ = new BoolConst(true, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| FALSE{&lt;br /&gt;
		$$ = new BoolConst(false, @$);&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;
	| LB expr RB {&lt;br /&gt;
		$$ = $2;&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 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;
	| expr LT expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Less, @$);&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 GT expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.More, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr GE expr {&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.MoreEqual, @$);&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
  &lt;br /&gt;
if: IF LB expr RB operator elsepart {&lt;br /&gt;
		if ($3.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Условие должно иметь логический тип&lt;br /&gt;
		}&lt;br /&gt;
		$$=new If($3,$5,$6,@$);&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
 &lt;br /&gt;
elsepart: { $$ = null; }&lt;br /&gt;
	| operator {&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
while: WHILE LB expr RB operator {&lt;br /&gt;
		if ($3.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Условие должно иметь логический тип&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new While($3, $5, @$);&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Extremall</name></author>
	</entry>
</feed>