我正在尝试将Chris Lambro的ANTLR3Javascript语法移植到ANTLR4
我收到以下错误,
集合中当前不支持规则引用"LT"
在以下代码中 ~(LT)*
LineComment
: '//' ~(LT)* -> skip
;
LT : '\n' // Line feed.
| '\r' // Carriage return.
| '\u2028' // Line separator.
| '\u2029' // Paragraph separator.
;
Run Code Online (Sandbox Code Playgroud)
我需要帮助理解为什么我会收到此错误,以及如何解决它.
我正在研究一个makefile规则,并希望在递归调用make之前取消设置环境变量MAKEFILES.在其他BSD系统上,我这样做:
env -u MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Run Code Online (Sandbox Code Playgroud)
在Linux上,我这样做:
env --unset=MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Run Code Online (Sandbox Code Playgroud)
但是,这两种风格都不适用于Macintosh OS X Mavericks,不过,我希望其他地方使用的BSD风格也可以.
我通过BSD样式调用得到的错误是:
env: illegal option -- u
Run Code Online (Sandbox Code Playgroud)
如何在OS X上调用命令之前取消设置环境变量,为什么其他地方使用的BSD样式不起作用?
这是Mac的env手册页:
ENV(1) BSD General Commands Manual ENV(1)
NAME
env -- set and print environment
SYNOPSIS
env [-i] [name=value ...] [utility [argument ...]]
DESCRIPTION
env executes utility after modifying the environment as specified on the command line. The option name=value specifies an environmental variable, name, with a value of value. The option `-i' causes env to completely ignore …Run Code Online (Sandbox Code Playgroud) 我将一些代码移植到Darwin OS X,作为更改的一部分,我们从gcc转到clang编译器.
在代码中,有一个功能可追溯到2005年,并在互联网上发布了几个地方.它为几个不同的旧版GCC提供了功能,我已经删除了它提供的最后一个版本,v3.4.0或更高版本.代码取决于两个GCC特定类:__gnu_cxx::stdio_filebuf和__gnu_cxx::stdio_sync_filebuf.
//! Similar to fileno(3), but taking a C++ stream as argument instead of a
//! FILE*. Note that there is no way for the library to track what you do with
//! the descriptor, so be careful.
//! \return The integer file descriptor associated with the stream, or -1 if
//! that stream is invalid. In the latter case, for the sake of keeping the
//! code as similar to fileno(3), errno …Run Code Online (Sandbox Code Playgroud) 我将一些遗留代码从win32移植到win64.不是因为Win32对象的大小是为我们的需求太少,而是因为Win64的是现在比较标准,我们希望端口的所有我们的环境,以这种格式(和我们也使用一些第三方库提供的64位比32位更好的性能) .
我们最终得到了大量的;
警告C4267:'参数':从'size_t'转换为'...',可能会丢失数据
主要是由于代码如下:unsigned int size = v.size();哪里v是STL容器.
我知道为什么警告有意义,我知道它为什么发布以及如何解决.但是,在这个具体的例子中,我们从未经历过容器大小unsigned int过去超过最大值的情况....所以当代码移植到64位环境时,没有理由出现这个问题.
我们讨论了什么是最好的策略来压制那些嘈杂的警告(他们可能会隐藏我们将会遗漏的相关警告),但我们无法对适当的策略做出决定.
所以我在这里问这个问题,最佳推荐策略是什么?
1.使用 static_cast
用一个static_cast.做unsigned int size = static_cast<unsigned int>(v.size());.我并不"喜欢",因为我们放弃了64位容量来在容器中存储大量数据.但由于我们的代码从未达到32位限制,所以这似乎是一个安全的解决方案......
2.替换unsigned int为size_t
这肯定更难,因为unsigned int size上面示例中的对象可以被设置为其他函数,保存为类属性,然后删除单行警告可能最终导致数百个代码更改...
3.禁用警告
这很可能是一个非常糟糕的主意,因为在这种情况下uint8_t size = v.size()它也会禁用警告,这肯定会导致数据丢失....
4.定义"安全演员"*功能并使用它
像这样的东西:
template <typename From, typename To> To safe_cast( const From& value )
{
//assert( value < std::numeric_limits<To>::max() && value > std::numeric_limits<To>::min() );
// Edit 19/05: test above fails in some …Run Code Online (Sandbox Code Playgroud) 我有一个定义了 proptypes 的 React 组件库,我正在考虑切换到 Typescript。是否有任何工具可以帮助移植代码?这是一个简单组件的示例道具集:
static propTypes = {
active: PropTypes.bool,
children: PropTypes.node,
disabled: PropTypes.bool,
icon: Icon.propTypes.kind,
tabIndex: PropTypes.number
};
Run Code Online (Sandbox Code Playgroud)
我正在想象一个工具可以将其转换为以下内容:
static propTypes = {
active: PropTypes.bool,
children: PropTypes.node,
disabled: PropTypes.bool,
icon: Icon.propTypes.kind,
tabIndex: PropTypes.number
};
Run Code Online (Sandbox Code Playgroud)
写起来并不难,但如果它已经存在就好了。
我工作的一个移植代码库的Java可可/ Objective-C的用于台式机Mac OS X的Java代码中使用了大量的和大量的与像checked异常的方法:
double asNumber() throws FooException {
...
}
Run Code Online (Sandbox Code Playgroud)
在Objective-C中表示这些的最佳方法是什么?例外或错误输出参数?
- (CGFloat)asNumber {
... // possibly [FooException raise:format:];
}
Run Code Online (Sandbox Code Playgroud)
要么
- (CGFloat)asNumberError:(NSError **)outError {
...
}
Run Code Online (Sandbox Code Playgroud)
我觉得out-errors通常是Objective-C的更好解决方案,但正如你所看到的......很多像上面那样的方法看起来很尴尬.而且,还有很多这些.
当然要记住,由于这些是Java 中的检查异常,我需要在调用这些方法的地方添加@try块或if (*outError) {...}检查(很多地方).
我记得听说虽然@try在Objective-C中输入块曾经是昂贵的,但它在64位或SL或其他一些新的环境中是便宜的(不记得确切).我完全不关心向后兼容性,所以我绝对愿意只为新的热度而设计.
我一直在玩Android并尝试移植Java应用程序.以下是关于我遇到的问题的一些问题,并希望得到一些指导.
这是一个相当大的问题(多个问题).但是,我不是盲目地问他们,因为我已经研究了我能做些什么,并试图让我理解使用它.我花时间提出问题,希望他们对我想要实现的目标有一半的了解.
我将提供一半的代表作为赏金,因为我希望得到彻底的答案和帮助,希望它足以吸引一些人帮助.
提前,谢谢你的时间和帮助!(期待阅读回复).
TextLayout && Font && Graphics2D
有问题的是以下类和方法:
TextLayoutTextLayout.getAdvance()TextLayout.getAscent()TextLayout.draw()Graphics2D.getFontRenderContext()我不太确定TextLayoutAndroid中的等价物.我曾经读过有些人会TextView使用它,但我不确定是否会这样做
为以下工作.我会提供一些我想做的事情的来源,或许可以帮助我.
Java来源:
private Font myStringFont = new Font("Helvetica", Font.BOLD, 12);
private String myString = "My Test String";
private int midX = getWidth() / 2;
private int midY = getHeight() / 2;
Graphics2D g2 = new Graphics2d();
TextLayout layout = new TextLayout(myString, font, g2.getFontRenderContext());
g2.drawString(myString, midX - ((int)layout.getAdvance() /2), midY);
Run Code Online (Sandbox Code Playgroud)
Android复制尝试:
Canvas canvas;
Paint paint;
private String myString = "My Test …Run Code Online (Sandbox Code Playgroud) 大家好我为ios和android sdk开发应用程序.有任何教程解释如何将现有的Android应用程序移植到黑莓手机并在黑莓市场上发布.就黑莓而言,我毫不知道.我看到最近的一个视频RIM在黑莓手册上播放Android应用程序..如果有可能在黑莓手册中移植Android应用程序.该移植只能缩小到黑莓手册或所有其他黑莓产品.
我正在将一些Unix代码移植到Windows Visual Studio 2010中.我遇到了以下问题
gmtime_r(&now, &tm_time);
Run Code Online (Sandbox Code Playgroud)
我发现gmtime_r()是一个标准的Unix函数,但我希望找到与Windows等价的函数.我在time.h中发现了很多gmtime函数,但是我很难找到哪一个是等价的,如果它存在的话.有人能指出我正确的方向吗?
我有一个EventListener,它监听整个文档并记录击键,但是我想在满足某些条件时删除这个监听器.
以下是我的代码片段:
document.addEventListener('keyup', function(e) {
var letter_entered = String.fromCharCode(e.keyCode).toLowerCase();
player.makeGuess(letter_entered);
if(player.win_status === true || player.lose_status === true) {
document.removeEventListener('keyup', arguments.callee, false);
}
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,但根据Mozilla Developer Docs,此方法已被弃用.
我知道我可以简单地命名这个函数,但有没有替代方法可以让我继续使用未命名的函数?
porting ×10
c++ ×3
macos ×3
android ×2
java ×2
javascript ×2
antlr3 ×1
antlr4 ×1
arguments ×1
blackberry ×1
casting ×1
cocoa ×1
deprecated ×1
graphics2d ×1
iostream ×1
objective-c ×1
reactjs ×1
reflection ×1
text ×1
time ×1
typescript ×1
unix ×1
windows ×1