Перейти к содержанию
    

и что не так с интерфейсами в шарпе ?

с ними все прекрасно. но их надо реализовывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с ними все прекрасно. но их надо реализовывать.

Lost at C? Forth May Be the Answer

 

Классический цикл работы FVM

Слова разделены пробелами или переводом строки.

 

Взяли слово из входного потока.

Ищем слово в словарике.

Нашли слово? то проверяем его признаки: immediate (всегда исполняем) иначе компилируем вызов слова (система в состоянии компиляции) или исполняем.

Если не нашли слово то может это число?

Да число то проверяем состояние системы: компиляция (компилируем литерал) иначе ложим его на стек

Нет - выдаём ошибку

lost-fig1.gif

 

P.S. Immediate слово - слово немедленного исполнения ( : ; IF ELSE THEN. и другие необходимые во время трансляции кода для его добавления к основному "телу" системы

при построении новых слов)

Если для пользователя понадобится Бейсик или какие то другие фишки

то небольшим расширением Форт системы его несложно получить :)

На местном форуме тоже есть несколько тем интересного обсуждения Forth (Форт). Ищется через поле поиска.

Для Форт систем записанных в контроллер, часто в качестве потока ввода/вывода используется UART и терминальная программа общения с контроллером по UART.

(или что то более функциональное). В контроллере может находится и дополнительный сервисый софт - типа встроенного редактора (обычно тоже на Форт добавленного к телу системы)

Программа дописыватся или удаляется в контроллере при использовании режима самопрограммирования контроллера.

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

их надо реализовывать

в смысле, для вас надо написать программу ?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в смысле, для вас надо написать программу ?

в смысле конкретный, реальный пример.

советы - возьми слово, положи в стак, задвинь фортом придави джансоном, ну ты ж дурак не понимаешь что ли это ж так элементарно - лично я, постеснялся бы давать.

 

не знаю как принято у вас но если бы я дал такой совет

положить в стек номер порта 
читать порт
положить в стек константу
сравнить

то на меня бы долго смотрели нехорошим взглядом. а могли бы и что нибудь сказать. ну это у нас на районе такие нравы. как у вас - не знаю.

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

советы - возьми слово, положи в стак, задвинь фортом придави джансоном, ну ты ж дурак не понимаешь что ли это ж так элементарно - лично я, постеснялся бы давать.

не знаю как принято у вас но если бы я дал такой совет

Как в известном анекдоте: @"Ну тады Ой!"

Блок-схема тоже не интересна?

Вы похоже разделом ошиблись.

 

P.S. Должно было звучать так

"Предлагаю сделать за меня PLC, но не знаю как. Требования к PLC придумайте сами и сами себя мотивируйте для выполнения моей задачи!

Ась? Изучать слишком долго для меня, а мне это нужно? Плачу 500р за готовое устройство" :)

Сколько Вам лет профессор(ша)?

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Должно было звучать так

"Предлагаю сделать за меня PLC, но не знаю как. Требования к PLC придумайте сами и сами себя мотивируйте для выполнения моей задачи!

Ась? Изучать слишком долго для меня, а мне это нужно? Плачу 500р за готовое устройство" :)

Сколько Вам лет профессор(ша)?

Самое смешное, что задача решается в лоб по инструкции на видео за 10 минут и 50 бакинских на железо и софт. И сиди себе спокойно на IL программируй свою логику сколько хочешь.

https://m.youtube.com/watch?v=_MeQBfQObgk

 

Но нет, мы не ищем легких путей. Нам надо изобрести свои парсеры, фреймворки, джейсоны и форты с компиляторами разработать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое смешное, что задача решается в лоб по инструкции на видео за 10 минут и 50 бакинских на железо и софт. И сиди себе спокойно на IL программируй свою логику сколько хочешь.

https://m.youtube.com/watch?v=_MeQBfQObgk

 

Но нет, мы не ищем легких путей. Нам надо изобрести свои парсеры, фреймворки, джейсоны и форты с компиляторами разработать.

ну расбери с линуксом это тоже не совсем тот путь который мне подходит.

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в смысле конкретный, реальный пример.

советы - возьми слово, положи в стак, задвинь фортом придави джансоном, ну ты ж дурак не понимаешь что ли это ж так элементарно - лично я, постеснялся бы давать.

 

не знаю как принято у вас но если бы я дал такой совет

положить в стек номер порта 
читать порт
положить в стек константу
сравнить

то на меня бы долго смотрели нехорошим взглядом. а могли бы и что нибудь сказать. ну это у нас на районе такие нравы. как у вас - не знаю.

если непонятно что такое стэк то надо открыть какой-нибудь букварь по программированию прочитать что же это такое, а не жаловаться на четырёх уже страницах что советы "неправильные" дают.

 

у Страуструпа в книжке есть пример калькулятора на сотню строк, с разбором любых выражений со скобочками и переменными, добавить туда ||, &&, ~ для логической арифметики в стиле С, когда 0 = false. И если хочется именно "скомпилировать", чтобы не парсить каждый раз, надо вместо непосредственно вычисления сложить все операции и значения в стэк и потом просто пройтись по нему и выполнить.

кода для этого написать надо куда меньше чем в этой теме нафлужено.

 

собственно на первой же странице RabidRabbit всё уже рассказал как сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

задача действительно плевая. для сильных спецов.

о-о-о-о, всё ясно. повидал я таких:

> Сделать то-то. Задача лёгкая, но мне некогда. Потому ценник низкий.

 

Я понимаю, что современный мир крайне неидеален, но отсутствие логики - это проблема для инженера. Чуть-чуть разжую вам, ато мало ли.

Вы не можете категоризировать сложность задачи, которую не выполнили. Все невыполненные задачи априори сложные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в смысле конкретный, реальный пример

да легко, давайте небольшую реальную задачу, $20 и будет вам программа и интерпретатор под неё

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И это еще Огурцов реально по-Божески заряжает. Так то я слыхал, обычно со ста тыщ рублей ценник начинается! ))))))))))))))))))

Рекомендую немедленно соглашаться!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

казалось бы причём тут зарядка, это ж чисто на пиво, дабы не скучать

а за стотыщ я вам шарп со студией 16 и фреймворком 6.0 напишу

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну расбери с линуксом это тоже не совсем тот путь который мне подходит.

Я вам показал интерпретатор, парсер и отладчик для ПЛК в одном флаконе - это то, к чему вы собираетесь идти. Распбери с линуксом там только одна из платформ. Не нравится - возьмите другую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

param1

input1

&&

param2

input2

input3

||

&&

||

Это называется "обратная польская нотация". Удобна для обработки стековой машиной.

да но вопрос как это сохранить, в какой структре. чтоб потом знать - сделай AND с этой группой а потом сделай OR с той группой а потом сделай AND межу ними. как это практически связать.

Вам уже всё разжевали и даже в рот положили. И правильно указали - что у Вас проблемы уже с парсингом.

Выражения удобно парсить в формат записи обратной польской нотацией. И в ней уже обрабатывать выражения. Скобки проходятся рекурсией.

В обратной польской нотации раньше задавались выражения для программируемых калькуляторов, если кто помнит такие девайсы....

Выражение в обычной записи (a*b+c*(d-e)) в обратной польской нотации будет выглядеть: ab*cde-*+ - это уже удобно для обработки исполнительным алгоритмом и уже без скобок.

 

если это операция - снимаем со стека 2 значения, выполняем операцию, результат кладём в стек

Не обязательно 2 операнда. 2 - это для бинарных операций. Для унарных - 1 операнд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вам показал интерпретатор, парсер и отладчик для ПЛК в одном флаконе - это то, к чему вы собираетесь идти. Распбери с линуксом там только одна из платформ. Не нравится - возьмите другую.

мне бы не хотелось уходить в какие то специализированные среды разработки.

у меня есть мощный камень и такой же язык программирования. и я думаю этих двух условий вполне хватает для решения задачи. тем более что она почти решена.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...