OberonCore https://forum.oberoncore.ru/ |
|
Coco/R. Пример-проба: примитивный Си https://forum.oberoncore.ru/viewtopic.php?f=61&t=2485 |
Страница 1 из 1 |
Автор: | Евгений Темиргалеев [ Четверг, 25 Март, 2010 23:10 ] |
Заголовок сообщения: | Coco/R. Пример-проба: примитивный Си |
1) Игнорируются пробелы и упр. литеры 01X..1FX 2) Идентификаторы, целые, вещественные, строки без числовых кодов символов. 3) Объявления переменных int и double 4) Оператор присваивания 5) Операторы ввода >> и вывода << Код: TOKENS ident = (letter | "_") {letter | "_" | digit}. int = "0" {digit8} | digit {digit} | "0" ("x" | "X") digit16 {digit16}. float = digit { digit } "." { digit } [ ("e" | "E") [ "+" | "-" ] digit {digit} ]. string = '"' { noQuoteAndEsc | "\" (noCtrl | eol) } '"'. PRODUCTIONS PrivPrimc = { Entry } EOF. Entry = [ Decls | Stat ] ";". Decls = ("double" | "int") Def {"," Def}. Def = ident ["=" Expr]. Expr = SimpleExpr { (">" | "<" | ">=" | "<=" | "==" | "!=") SimpleExpr }. SimpleExpr = Factor { ("+" | "-") Factor }. Factor = Unary { ("*" | "/" | "%") Unary }. Unary = [ "+" | "-" ] (ident | int | float | "(" Expr ")"). Stat = Inp | Out | Assign. Inp = ">>" ident { ">>" ident }. Out = "<<" (Expr | string) { "<<" (Expr | string) }. Assign = ident "=" Expr. Вложение: Требуются 1) i21sysIn: http://www.inr.ac.ru/~info21/software.htm, базовый комплект 2) Coco: http://www.zinnamturm.eu/downloadsAC.htm#Coco 1) Primc.atg компилировать кокой 2) Перетащить из конца PrivPrimcP описания ошибок в PrivPrimc.GetMsg 3) дальше - см. командеры в конце PrivPrimc.atg (компиляция, выполнение) Тестировал мало, может какие ошибки остались... P.S. i21sysIn рулит |
Автор: | Info21 [ Четверг, 25 Март, 2010 23:25 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Евгений Темиргалеев писал(а): P.S. i21sysIn рулит Рулит "текст как интерфейс", хорошо прочувствованный.
|
Автор: | Alexey Veselovsky [ Среда, 14 Апрель, 2010 12:30 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Цитата: Операторы ввода >> и вывода << Я таки дико извиняюсь, но когда операторы << и >> стали операторами ввода и вывода в Си? Это операторы побитового сдвига вроде как всегда были, есть и будут |
Автор: | Comdiv [ Среда, 14 Апрель, 2010 13:02 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Не в С, а в примитивном С. |
Автор: | Alexey Veselovsky [ Среда, 14 Апрель, 2010 23:06 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Comdiv писал(а): Не в С, а в примитивном С. Где можно почитать спеку на "примитивный С" ? |
Автор: | Евгений Темиргалеев [ Среда, 14 Апрель, 2010 23:19 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Alexey Veselovsky писал(а): Где можно почитать спеку на "примитивный С" ? viewtopic.php?p=45074#p45074
|
Автор: | Alexey Veselovsky [ Суббота, 01 Май, 2010 03:42 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Я правильно понимаю, что это не только парсер, но ещё и интерпретатор? Причем интерпретация идет сразу в процессе парсинга. Т.е. без промежуточного какого-то представления (байткода). |
Автор: | Евгений Темиргалеев [ Суббота, 01 Май, 2010 08:26 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Да. "Однопроходной интерпретатор" хотелось сделать работающую игрушку с минимальными усилиями... |
Автор: | Alexey Veselovsky [ Суббота, 01 Май, 2010 14:36 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Евгений Темиргалеев писал(а): Да. "Однопроходной интерпретатор" хотелось сделать работающую игрушку с минимальными усилиями... Жаль что язык не тьюринг-полный, а то можно было бы идти за нобелевской премией |
Автор: | Alexey Veselovsky [ Суббота, 01 Май, 2010 15:15 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Евгений Темиргалеев писал(а): хотелось сделать работающую игрушку с минимальными усилиями... А, если не секрет, сколько ушло времени на написание этого интерпретатора? |
Автор: | Alexey Veselovsky [ Суббота, 01 Май, 2010 20:37 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Не очень понятно что вот это означает: Код: ctrl = CHR(1)..CHR(31).
noCtrl = ANY - ctrl. |
Автор: | Александр Ильин [ Суббота, 01 Май, 2010 21:18 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Alexey Veselovsky писал(а): Не очень понятно что вот это означает: ctrl - управляющие символы. noCtrl - остальные.
|
Автор: | Евгений Темиргалеев [ Воскресенье, 02 Май, 2010 14:26 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Alexey Veselovsky писал(а): А, если не секрет, сколько ушло времени на написание этого интерпретатора? часа два на придумывание грамматики и проч., запись "чистой грамматики" на Cocoгде-то через неделю-две решил реализовать (идеи в голове промеж делом поварились) - ушло 4-5 часов если память не изменяет... |
Автор: | Alexey Veselovsky [ Понедельник, 03 Май, 2010 18:59 ] | ||
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си | ||
Попробовал собрать. Запустил Coco/R, он мне сгенерировал исходник для парсера. Однако хотя содержимое и похоже на odc файл, BB упорно эти сгенереные файлы открывает как просто текст, в результате компилятор спотыкается при попытке это дело скомпилировать. Я конечно сейчас из этого сделаю нормальный файл, однако это обход проблемы а не решение.
|
Автор: | Александр Ильин [ Понедельник, 03 Май, 2010 20:05 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Alexey Veselovsky писал(а): Однако хотя содержимое и похоже на odc файл, BB упорно эти сгенереные файлы открывает как просто текст Поправка: содержимое является корректным odc-файлом и BB его правильно открывает, но внутри odc-файла почему-то присутствует копия заголовка какого-то другого odc-файла. Доказательство прикладываю.Вложение: Это ваш файл, в котором я псевдозаголовок выделил жирным и просто сохранил (Ctrl+S). Раз при последующем открытии есть выделение жирным, значит это не "просто текст", а именно корректный odc.
|
Автор: | Евгений Темиргалеев [ Понедельник, 03 Май, 2010 22:51 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Alexey Veselovsky писал(а): Попробовал собрать. Запустил Coco/R, он мне сгенерировал исходник для парсера. Однако хотя содержимое и похоже на odc файл, BB упорно эти сгенереные файлы открывает как просто текст... Если ББ читает файлы как просто текст, то для файлов данного типа не зарегистрирован конвертер. В этом случае ББ использует первый конвертер в списке, который "хавает всё", а это (в стандартном Config) - чтение простого текста.Когда так открывается заготовка парсера .frm, получается показанный результат. Есть предположение, что Вы проглядели пункт 4 в разделе "установка" из Coco/Docu/Quick-Start |
Автор: | Alexey Veselovsky [ Понедельник, 03 Май, 2010 23:00 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Евгений Темиргалеев писал(а): Alexey Veselovsky писал(а): Попробовал собрать. Запустил Coco/R, он мне сгенерировал исходник для парсера. Однако хотя содержимое и похоже на odc файл, BB упорно эти сгенереные файлы открывает как просто текст... Если ББ читает файлы как просто текст, то для файлов данного типа не зарегистрирован конвертер. В этом случае ББ использует первый конвертер в списке, который "хавает всё", а это (в стандартном Config) - чтение простого текста.Когда так открывается заготовка парсера .frm, получается показанный результат. Есть предположение, что Вы проглядели пункт 4 в разделе "установка" из Coco/Docu/Quick-Start Да, просмотрел. Спасибо. PS. Пятый пункт весёлый: "5. Exit and restart BlackBox" |
Автор: | Comdiv [ Суббота, 28 Апрель, 2012 12:42 ] |
Заголовок сообщения: | Re: Coco/R. Пример-проба: примитивный Си |
Может кто-нибудь находил или писал грамматики для нормального C? На оф.сайте нашлась грамматика ANSI C для С#. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |