База ответов ИНТУИТ

Разработка компиляторов

<<- Назад к вопросам

В качестве алфавита операторов данной программы:
int F (int a, int b){  int g = a, m = b;  if (a < b) {g = b; m = a;}  while (m)   {    int s = g;    g = m;    m = s % m;  }  return g;}
выступает следующее множество:

(Отметьте один правильный вариант ответа.)

Варианты ответа
{'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a'}
{'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m', 'm=s%a'}
{'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m'}(Верный ответ)
{'g=a', 'm=b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m'}
Похожие вопросы
Следующий набросок программы:
q = q0;c = GetChar();while (c != eof) {  q = move (q, c);  c = GetChar();}if (q is in F) return "yes";else return "no"; 
демонстрирует (предполагается, что входная лента заканчивается символом end_of_file):
Следующая процедура:
int Factor (){   char ch = getChar();   if (isDigit (ch)) return getValue(ch);   if (ch == '(')    {      int result = Formula ();      if (getChar() == ')') return result;      error ("Неожиданный символ");      return 0;   }   return error ("Неожиданный символ"); }
вычисляет значение:
При таком описании класса:
public class Matrix {	public const int n = 10;	public int[,] elements = new int[n,n];	public int this[int i, int j]	{		get { return elements[i,j]; }		set { elements[i,j] = value; }	}}
допустимо следующее использование:
Данная функция:
int yylex (void){int ch;while ((ch = getchar ()) == ' ');if (isdigit (ch)){ungetc (ch, stdin); scanf (%i, &yylval);return NUMBER_LC;}return ch;}
вычисляет следующую пару значений:
Пустое множество и множество, состоящее только из пустой строки, являются:
Данная программа:
var in : integer;function Digits (integer n) : integer;var m : integer;begin  if n < 10 then return n  else begin    m := n div 10;    return n - m*10 + Digits (m);  end;end; begin  read (in);  writeln(Digits(in));end.
используется:
Для данной грамматики:
S -> B AA -> +B A A -> eB -> D CC -> * D C C -> eD -> (S) D -> a
множества FIRST определяются следующим образом:
В данном примере:
goto (I, X) {   J={};         for (каждой ситуации [A->w.Xv] из I) {      J+=[A->wX.v];   }   return closure (J);}
происходит:
В С# возможно определение:
string s = "Hello C#";
под которым подразумевается следующее присваивание:
В данном примере:
struct S {int a; int b};int F (int n, struct S * v){int i, s = 0;for (i=0; i<n; i++){	int q = (v+i)->a - (v+i)->b; --- 1	if (q < 0) s += (v+i)->a + (v+i)->>b;  --- 2else (v+i)->b = q;(v+i)->a = (v+i)->b;   --- 3}return s;}
эквивалентны следующие вхождения выражения (v+i)->b: